Удалить svn-Branch через git?

Я использую git как scm выбора, но должен использовать svn-repo. Я могу создать svn-remote-branch следующим образом:

git svn branch the_branch

Но как я могу удалить удаленную ветвь?

Ответ 1

В настоящее время невозможно удалить ветвь 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

Ответ 2

Это сработало для меня, спасибо. Не уверен, что моя среда просто другая, или это было изменено в более поздней версии git, но svn branch dirs были расположены в .git/svn/refs/remotes/, который был достаточно прост, чтобы найти исходные инструкции, изменение команды rm:

rm -rf .git/svn/refs/remotes/the_branch

Не уверен в тегах, так как я не использую их много.

Ответ 3

Opps, верхний ответ был написан в 2009 году, теперь правильный способ удалить удаленный тег

svn rm svn://dev.in/branches/ios_20130709150855_39721/
git branch -d -r ios_20130709150855_39721

Ответ 4

По состоянию на 2017 год у вас все еще нет git svn branch --delete. (-dопция есть, но для мистика --destination)

Как описано в других ответах, выполните следующие шаги:

  • $ git log -1 $commit
  • Найдите сообщение git-svn-id: $url в сообщении фиксации
  • $ svn rm $url

Мне было слишком лениво сделать это и сделать псевдоним:

[alias]
    svn-rm-branch = "!f() { if git_svn_id=\"$(git log -1 --format=%B \"[email protected]\" | 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 \"[email protected]\")\" 1>&2; fi }; f"