2011-09-02 3 views
7

사람들이 git-svn을 사용하여 병합을 제안하고 svn에 다시 커밋하는 것을 보았습니다.git-svn을 사용하여 트렁크의 변경 사항을 svn의 분기로 병합하는 방법은 무엇입니까?

나는 단계별 가이드를 통해 좋은 단계를 찾고 있습니다.

  • 문제가 있거나 그냥 svn을 사용해야합니까?
  • 사람들이 내가 자식을 사용했는지 svn의 병합에 대한 메타 데이터가 있습니까?
  • 트렁크의 복제본과 내가 선택한 1 개의 분기를 수행 할 수 있습니까?
  • 전체 복제본이 필요한가요 아니면 분기가 만들어진 지점에서 가져올 수 있습니까?
+0

가치가있을 수 있으며 svn 대신 git를 사용했다는 것을 알 수 없습니다. 그래도 'git rebase'를 어떻게 사용하는지 매우주의해야한다. 그것은 정말로 svn 역사의 혼란을 만들 수 있습니다. –

+0

어떤 병합입니까? 선택된 커밋/리비전? 또는 트렁크에서 커밋을 계속 유지하면서 트렁크로 다시 통합하려는 피쳐 브랜치입니까? –

+0

단계별 가이드 : http://myhumblecorner.wordpress.com/2011/08/25/git-svn-cheatsheet-for-git-rebels-in-an-svn-workplace/'git checkout ; git merge --squash ; 자식 커밋; 자식 svn dcommit # - 스쿼시는 키' –

답변

3

에서

자식-SVN에 대한 작은 튜토리얼을 찾을 수있는 당신의 VCS에 충실하고 BeyondCompare 또는 만화경 같은 적절한 병합 도구를 얻기 위해 조언을 것입니다 문제가 있거나 그냥 svn을 사용해야합니다.

SVN에 보유하고 싶은 정보가 얼마나 많은지에 달려 있다고 생각합니다. git을 사용하여 병합을 수행하는 경우 SVN은 변경 사항의 출처를 알 수 없거나 SVN 트렁크처럼 보이며 분기가 여전히 분리되어 있다고 생각합니다.

사람들이 내가 자식을 사용했는지 그리고 svn에 병합에 대한 메타 데이터가 있습니까?

아니오, 트렁크에 새로운 커밋처럼 보일뿐입니다.

트렁크의 복제본과 내가 선택한 1 개의 분기를 수행 할 수 있습니까?

git-svn을 새로운 자식 repo로 복제했다면 그렇다. git-svn을 복제하고 관계없는 분기를 삭제하거나 복제하기 전에 git-svn 저장소에서 직접 수행하십시오.

게시 방법은 convert an SVN repo to a git one입니다. 나는이 상황에서 대부분이 적용될 것이라고 생각한다.

완전한 복제가 필요합니까? 아니면 분기가 만들어진 지점에서 가져올 수 있습니까?

--depth 옵션을 사용하지 않는 이상 자식 복제본은 일반적으로 전체 복제본입니다. 이전 기록을 버리려면 모든 커밋을 이전 명령으로 스쿼시하거나 .git 디렉토리를 삭제하고 새 저장소를 초기화하십시오.

+2

힘내네 부분 복제본을 만들 수 있습니다 http://stackoverflow.com/questions/747075/how-to-git-svn-clone-the-last-n-revisions-from-a-subversion-repository – hdorio

+0

@Doud, thanks for 수정. – cmcginty

1

나는 이것을 제안하는 사람들의 기사를 읽었지만, GIT와 SVN 모두 동일한 코드 (git의 로컬 repo와 svn을 사용한 호스트 된 repo)에 대해 모두 사용해야하는 경우에만 사용해야한다고 생각합니다. 그것은 가치가 난 그냥

http://flavio.castelli.name/howto_use_git_with_svn

+0

+1 좋은 블로그 게시물이지만 병합은 다루지 않습니다. –

10

나는이 게시물에서 많은 성공을 거둔 지침을 사용했다.http://justaddwater.dk/2009/03/09/using-git-for-svn-repositories-workflow/

git을 사용하여 분기 간 병합 한 다음 svn repo에 커밋합니다. 이것은 svn의 병합 절차를 따르지 않으므로 다른 사용자에게 문제가 될 수 있습니다. svn : merge 속성이 설정되지 않았습니다.

git-svn은 git-svn을 사용하고 있다는 증거를 svn repo에 남기지 않습니다.

+1

+1 지금까지 최고의 답변. 네가 데이브니까. –

+0

나는 뭔가를 놓치고 있다고 생각합니다. SVN 브랜치가 "git branch -a"에있는 git 브랜치로 나타나야한다는 말입니까? 내가 본 유일한 브랜치는 내가 만든 것과 "remotes/git-svn"이다. SVN 브랜치는 디렉토리 구조로만 나타납니다. 이 지침은 SVN에 여기에서 사용하지 않는 분기의 서버 측 개념이 있는지 궁금하게 생각합니다. – benkc

+0

찾으면 git clone에서 -s 옵션을 찾을 수 없습니다. – boutta

관련 문제