IT Share you

Git-svn : 새 브랜치 / 태그 생성 및 푸시?

shareyou 2021. 1. 6. 08:10
반응형

Git-svn : 새 브랜치 / 태그 생성 및 푸시?


-s( git svn clone http://server/repo -s) 옵션 과 함께 git-svn을 사용하여 SVN 저장소를 복제 한 후 어떻게 브랜치 또는 태그를 생성하고 dcommiting 시 저장소의 관련 브랜치 / 태그 디렉토리로 푸시 합니까?

예를 들어; git을 사용하여 foobar로컬 에서 브랜치 를 만들려면 ( git checkout -b foobar) git-svn 이 서버에서 브랜치를 만들도록 하려면 ( http://server/repo/branches/foobar) 어떻게해야합니까?

Git 1.5.5.6을 사용하고 있습니다.


참고 :

아래 허용 된 방법 방법 이 없기 때문에 Git 1.5.5.6에서 작동하지 않습니다git svn branch . 나는 여전히 svn으로 직접 작업하는 것을 포함하지 않는 해결책을 찾고 있습니다.


튜토리얼 에서 모든 핵심 세부 사항을 읽을 수 있지만 요점은 기본적으로 다음과 같습니다.

$ git svn branch -m "Topic branch" my_topic            # Create SVN branch called "my_topic"
$ git checkout --track -b my-topic remotes/my_topic    # Create the Git branch for "my_topic"
# Hack hack hack...
$ git svn dcommit --dry-run    # Make sure you're committing to the right SVN branch
$ git svn dcommit              # Commit changes to "my_topic" branch in SVN

Subversion 브랜치가 존재하기 전에 로컬 브랜치를 생성했고 이제 로컬 브랜치를 Subversion 브랜치로 푸시하려는 경우 다음을 수행 할 수 있습니다.

로컬 브랜치에 할당 된 svn 브랜치 개정을 얻습니다.

$ git svn info

출력에서 URLfield는 현재 svn 분기 경로이고 Revisionfield는 subversion 개정 번호입니다.

로컬 브랜치를 생성 한 개정에서 svn 브랜치를 생성합니다.

$ svn cp http://svn-repo/my_app/trunk@123 http://svn-repo/my_app/branches/feature1

git repo가 ​​그것에 대해 알 수 있도록 새 svn 브랜치를 가져옵니다.

$ git svn fetch

이제 svn 브랜치가 git repo에 원격으로 추가되어야합니다. $ git branch -a * feature1 master remotes/feature1

이 시점에서 리모컨은 여전히 ​​트렁크입니다. 로컬 분기가 새 원격 분기를 가리켜 야합니다. 원격 브랜치에서 로컬 브랜치를 리베이스하여이를 수행 할 수 있습니다. $ git rebase remotes/feature1

이제 로컬 브랜치가 원격 브랜치를 참조하므로 변경 사항을 커밋 할 수 있습니다. 먼저 테스트 실행을 수행하여 변경 사항이 원격 브랜치에 들어갈 것이라는 확신을 가지십시오. $ git svn dcommit --dry-run Commiting to http://svn-repo/my_app/branches/feature1

이제 원격 지점에 변경 사항을 커밋 할 수 있습니다. $ git svn dcommit

대부분의 방법은 먼저 Subversion을 분기 한 다음 원격 분기를 추적하는 로컬 분기를 생성하도록 알려줍니다. 그러나 나는 종종 내 로컬 브랜치가 원격 브랜치를 추적해야하는지 여부를 미리 결정하지 않습니다. 종종 로컬로 분기하고 원격 분기로 푸시 할 의도없이 변경합니다. 나중에 로컬 브랜치를 원격 브랜치로 커밋하기로 결정하면 위의 단계를 수행합니다.


다른 git 브랜치에 이미 가지고있는 것들로부터 최근에 생성 된 브랜치로 리베이스해서는 안된다는 점을 지적하고 싶었습니다. git svn dcommit은 나중에 트렁크로 푸시합니다. 적어도 그것은 나에게는 문제였습니다.

대신, 이전 git 브랜치에서이 새로운 svn 브랜치로 변경 사항을 가져 오려면 예를 들어 cherry-pick을 사용하십시오.

참조 URL : https://stackoverflow.com/questions/2490794/git-svn-create-push-a-new-branch-tag

반응형