2013-01-16 2 views
1

괜찮습니다. 다음과 같습니다. 'feature-branch'라는 로컬 저장소에 git 분기가 있습니다.
이 브랜치는 git-svn이 활성화되어 있으며, 로컬 브랜치 'remotes/svn/branches/feature-branch'를 추적 중입니다.
그리고이 지점은 외부 저장소의 SVN 분기를 추적합니다.LOCAL 추적 지점을 결정하는 방법은 무엇입니까?

이제 추적되는 SVN 분기를 결정하는 방법을 알고 있습니다. git svn info을 사용하여이 작업을 수행 할 수 있습니다. 그러나 내 지사 지점에서 어떤 현지 지사를 추적 할 수 있습니까? 즉. 어떻게 'feature-branch'가 'remotes/svn/branches/feature-branch'를 추적하고 있는지 확인할 수 있습니까?

GIT에서 '정상적인'추적 분기를 사용하면 git branch -avv을 수행 할 수 있으며 추적중인 분기가있는 각 분기에 표시됩니다. (꽤 까다 롭습니다 ...)

내 목표는 아직 SVN 저장소에 푸시되지 않은 커밋을 표시하는 것입니다. git log $remote..HEAD을 실행하면 쉽게이를 수행 할 수 있습니다. 하지만 $remote이 무엇인지 알아야합니다.

답변

1

feature-branch은 (SHA1 해시로 정의 된) git commit을 추적하고 있습니다. git-svn은 SVN 서버에 대한 원격을 생성하지 않으므로 SVN 브랜치를 추적하지 않습니다 (SVN 서버와의 모든 fetch/rebase/tag/branch/commit 기능은 git svn ...을 사용하여 수행됩니다). git-svn documentation

:

참고 다음과 같은 규칙 : git svn dcommit

가 SVN의 상부에 커밋하려고 시도는

git log --grep=^git-svn-id: --first-parent -1

에 이름이 커밋

... git svn info 또는 git log --grep=^git-svn-id: --first-parent -1을 사용하여 SVN 추적 분기를 확인하는 것이 옳았습니다.


특정 커밋 (SHA1 해시 기준) 시도 git branch --all --contains <commit-hash> 포함 된 다른 알려진 힘내 가지를 모두 찾으려면 (예를 : git branch --all --contains 856ce - 부분적 해시가 잘 작동합니다).

현재 분기의 전체 커밋 해시를 얻으려면 git rev-parse HEAD을 시도하십시오. 그러나 마지막 SVN 커밋의 전체 커밋 해시가 필요할 수 있으므로 git log --grep=^git-svn-id: --first-parent -1의 출력에 대한 SHA1 해시를 사용하려고합니다.

git rev-list --date-order --max-count=1 <svn-tracked-branch> 
git log <above-returned-hash>..HEAD 
:

, 당신은 (이미 수행하는 방법을 알아 낸로) 당신의 SVN 추적 지점을 찾아 다음에 연결해야 HEAD에 마지막 커밋의 로그를 얻으려면

전 (자식과 함께, 부분 해시 거의 항상 일) :

$ git rev-list --date-order --max-count=1 trunk 
117bbf6390a6cd62b47e9335be6a6d93c99d88e7 
$ git log 117bbf..HEAD 
commit f071e1781a98c33c2b36c21aedce4a9ab2311d47 
Author: Me <[email protected]> 
Date: Fri Aug 30 15:19:27 2013 -0700 

    test 
당신이 git log --grep=^git-svn-id: --first-parent -1에서 SHA1 해시를 사용하는 경우 당신은 아마 오히려 runn의 추가 단계를 복용보다 더 유용한 정보를 얻을 것이다

git rev-list --date-order --max-count=1 <svn-branch> 명령을 입력하십시오.

관련 문제