Удалить svn-ветку через git?
Я использую git в качестве scm выбора, но должен использовать svn-РЕПО. Я могу создать svn-remote-branch следующим образом:
git svn branch the_branch
но как я могу удалить удаленную ветку?
4 ответа:
В настоящее время невозможно удалить ветку SVN с помощью git-svn. Но легко удалить ветку с помощью SVN, даже не проверяя ее. Так что просто наберите
svn rm $URL/branches/the_branch
обратите внимание, что удаление ветви Subversion не приводит к ее удалению из репозитория git-svn. (Это намеренно, потому что удаление ветви Subversion не приводит к потере информации, тогда как удаление ветви git приводит к тому, что ее существование будет забыто после следующего git сбор мусора.) Поэтому, если вы хотите, чтобы удаленная ветвь SVN была удалена из вашего репозитория git, вам нужно сделать это вручную:
git branch -D -r the_branch rm -rf .git/svn/the_branch OR rm -rf .git/svn/refs/remotes/f8745/ (for newer versions)
чтобы удалить ветку git, которая соответствует тегу Subversion, команды немного отличаются:
git branch -D -r tags/the_tag rm -rf .git/svn/tags/the_tag
это хорошо работало для меня, спасибо. Не уверен, что моя среда просто отличается или это было изменено в более поздней версии git, но ветви svn dirs были расположены .git / svn / refs / remotes/ который был достаточно прост, чтобы найти из исходных инструкций, изменив команду rm на:
rm -rf .git/svn/refs/remotes/the_branch
Не уверен в тегах, так как я не использую их много.
Opps, верхний ответ был написан в 2009 году, теперь правильный способ удалить удаленный тег
svn rm svn://dev.in/branches/ios_20130709150855_39721/ git branch -d -r ios_20130709150855_39721
по состоянию на 2017 год, у нас все еще нет
git svn branch --delete
. (-d
опция есть, но это мистик--destination
)как описано в других ответах, ручные шаги:
- печатать сообщение:
git log -1 $commit
- в сообщении фиксации, найдите
git-svn-id: $url
строка- удалить ветку SVN:
svn rm $url
Я сделал псевдоним, чтобы автоматизировать эти шаги:
[alias] svn-rm-branch = "!f() { if git_svn_id=\"$(git log -1 --format=%B \"$@\" | grep -o '^git-svn-id:[^@]*')\" ; then svn rm --editor-cmd=\"$(git var GIT_EDITOR)\" \"$(echo $git_svn_id | cut -d' ' -f 2)\" ; else echo No git-svn-id in the message of the commit \"$(git rev-parse \"$@\")\" 1>&2; fi }; f"