Nice programing

git을 통해 svn-Branch를 삭제 하시겠습니까?

nicepro 2020. 12. 1. 19:42
반응형

git을 통해 svn-Branch를 삭제 하시겠습니까?


선택한 scm로 git을 사용하고 있지만 svn-repo를 사용해야합니다. 다음과 같이 svn-remote-branch를 만들 수 있습니다.

git svn branch the_branch

하지만 원격 브랜치를 어떻게 삭제할 수 있습니까?


현재 git-svn을 사용하여 SVN 브랜치를 삭제할 수 없습니다. 그러나 SVN을 사용하여 브랜치를 확인하지 않고도 쉽게 삭제할 수 있습니다. 그래서 간단히 입력

svn rm $URL/branches/the_branch

Subversion 브랜치를 삭제해도 git-svn 저장소에서 삭제되는 것은 아닙니다. (이것은 Subversion 브랜치를 삭제해도 정보가 손실되지 않기 때문에 의도적 인 것입니다. 반면 git 브랜치를 삭제하면 다음 git 가비지 콜렉션 이후에 그 존재를 잊게됩니다.) 따라서 git에서 원격 SVN 브랜치를 삭제하려는 경우 수동으로해야합니다.

git branch -D -r the_branch
rm -rf .git/svn/the_branch

OR
rm -rf .git/svn/refs/remotes/f8745/ (for newer versions)

Subversion 태그에 해당하는 git 브랜치를 삭제하려면 명령이 약간 다릅니다.

git branch -D -r tags/the_tag
rm -rf .git/svn/tags/the_tag

이것은 나를 위해 잘 작동했습니다. 감사합니다. 내 환경이 다른지 또는 최신 버전의 git에서 변경되었는지 확실하지 않지만 svn 브랜치 디렉토리는 .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 )

다른 답변에서 설명한대로 수동 단계는 다음과 같습니다.

  1. 커밋 메시지 인쇄 : git log -1 $commit
  2. 커밋 메시지에서 git-svn-id: $url줄을 찾습니다.
  3. 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"

참고 URL : https://stackoverflow.com/questions/1839606/delete-a-svn-branch-via-git

반응형