2014-06-18 9 views
1

내 서버에서 내 svn 저장소를 git로 변환하려고 생각하지만 이미 내게 도움이 될지 모르겠다. 왜냐하면 이미 로컬을 만드는 SmartGit/hg을 사용하고 있기 때문이다. git 저장소에 저장하고 모든 로컬 git 커밋을 이미 svn에 커밋합니다.git-over-svn에서 GIT로 마이그레이션 할 때의 이점

내가 볼 수있는 한, 여기에 나를 자식으로 마이그레이션 할 필요가 없다.

그래서 나와 SmartGit/hg 만 사용하는 동료에게 어떤 이점이 있습니까?

답변

1

저는 SmartGit에 익숙하지 않지만 git을 SVN 클라이언트로 사용할 때의 일반적인 단점을 알고 있습니다.

원격 자식 저장소로 전환하면 branchmerge 무거운 워크 플로를 효과적으로 사용할 수 있습니다.

그 의미는 무엇입니까?

SVN에는 일반적으로 모든 작업이 커밋되는 단일 분기가 있습니다. git을 사용하면 훨씬 쉽게 분기하고 병합 할 수 있으므로 여러 분기가있는 워크 플로를 효율적으로 사용할 수 있습니다.

예를 들어 master 브랜치와 development 브랜치를 사용할 수 있습니다. 개발 프로세스가 development 분기에서 이루어지는 동안 안정 버전 만 master으로 병합됩니다. 또한 특정 주제에 바인딩 된 feature 가지를 만들 수 있으며 주제가 완료 될 때까지 모든 feature 분기에서 모든 커밋을 수행 할 수 있습니다. 기능에 의해 도입 된 변경 사항을 development 브랜치에 병합 한 다음 나중에 master 브랜치에 릴리스로 병합 할 수 있습니다.

SVN 저장소를 사용하는 이유는 무엇입니까?

힘내는 SVN과 다르게 처리합니다. Git에서 병합은 여러 개의 상위 커밋을 가진 커밋입니다. 이것은 SVN에서 불가능합니다. SVN에서 모든 커밋은 단일 상위를가집니다.

그래서 병합 커밋을 SVN 저장소로 푸시하면 병합 기록이 손실됩니다. 병합 기록을 유지하는 동안 동료는 병합 된 분기의 커밋에서 모든 변경 사항을 도입 한 하나의 큰 커밋 만 볼 수 있습니다. 정보를 잃어 버렸습니다.
SVN 저장소와 상호 작용할 때 merge 대신 rebase 만 사용하는 것이 좋습니다.


이것은 SVN보다 원격 자식 저장소를 사용하는 것이 장점입니다. 검색하면 더 많은 것을 찾을 수 있습니다. 순수 망할 놈의 솔루션으로

+0

이 개발 분기를 SVN과 함께 사용할 수 없습니까? 내가 지회를 지키면, 나는 또한 하나의 커밋과 부모에 관한 정보를 유지할 것인가? – rubo77

+0

@Zeeker "SVN에서 분기를 병합 한 다음 커밋을 계속하는 것이 쉽지 않습니다."- WTF! RTFM !!! '--reintegrate'는 1.7에서도 (1.6과 반대로) 브랜치를 사용하는 것을 금지하지 않습니다. 1.8+는 sync-merge를 더 간단하게합니다. –

+0

@LazyBadger Git과 마찬가지로 SVN에 익숙하지 않다는 것을 인정합니다. 이 주제에 관한 정보는 쉽게 할 수 없다는 것이지만, 이것이 변했고 더 이상 사실이 아닐 수도 있습니다. 물론 GNU는 SVN보다 병합과 분기가 훨씬 쉬운 방법을 제공합니다. –

1

당신이 다음과 같은거야 혜택

체인
  • 적은 링크 (1 세보다 낫다) 외부 시스템의 사용을 방지 일반적인
  • 의 시스템보다 신뢰성이 을 의미입니다 번역 없음 시스템간에 전송되는의 데이터 (왜곡의 가능성이 낮음)