2010-03-30 4 views
4

git의 분기가 SVN보다 훨씬 쉽다는 사실을 계속 듣습니다. 왜냐하면 분기를 trunk/master에 쉽게 병합하기가 쉽기 때문입니다. 일부 자습서를 읽었지만 기본 병합 충돌 만 다루었습니다 ("Alice가 code.cpp의 8 행을 변경했으며 동시에 Bob이 8 행의 code.cpp를 변경했습니다 ...") SVN과 다른 모든 분산 소스 제어 시스템.GIT와 SVN의 차이점은 무엇입니까?

SVN 저장소에서 문제를 일으킬 수있는 분기의 변경 예를 제게 알려 줄 수 있습니까? 그러나 git에서 정상적으로 처리 할 수 ​​있습니까?

+0

최근에 svn이 (가) 최근에 발견 되었습니까? 나는 그것을 많이 사용하지 않는다. svn을 원격 지점에서 계속 병합 할 수 있습니까? – hasen

+0

이것은 여기에있는이 질문과 매우 유사합니다 : http://stackoverflow.com/questions/2475831/merging-hg-git-vs-svn 그래서 당신이 그것을보고 싶어 할 수도 있습니다. – welp

답변

3

나는 마지막으로 자식과 svn의 합병/지점 어설프게 약간의 시간이 있었고, SVN을 죽이고 있지만, 자식과 함께 완벽하게 작동하는 경우를 발견

/main.cpp 
/sub1/sub1.cpp 
/sub1/sub1.h 
:

가의 프로젝트가 해당 파일로 구성되어 있다고 가정 해 봅시다

  1. 지점 만들기
  2. trunk에서 sub1. *을 루트 디렉토리로 이동하고 sub1 하위 디렉토리를 삭제하십시오. 지점에서
  3. 는 /sub1.cpp에 약간의 변화
  4. 병합 분기 및 트렁크을 트렁크에서
  5. /sub1/sub1.cpp
  6. 에 약간 수정을가합니다.

SVN은 지점 3의 지점에서 이루어진 모든 변경 사항을 잃어 버리고, 비슷한 변경 사항은 완전히 병합됩니다. 분기가 필요한 프로젝트의 버전 제어 시스템으로 SVN을 거부하는 것으로 충분합니다.

2

hgInit.com은 Mercurial과 관련이 있지만, 병합 충돌에 대한 DVCS와 SVN의 차이점에 대한 매우 훌륭한 개요를 제공합니다.

서브 버전은 병합에 문제가 을 가지고 이유는 식으로 저장 버전 기록과 관련이있다. Subversion 은 수정에 대해 생각하기를 좋아합니다. A 개정판은 전체 파일 시스템이 어떤 특정 시점에서 보였던 것입니다. 시점입니다. Mercurial에서는 변경 세트에 대해 을 생각합니다. 변경 집합은 간략한 변경 목록으로 사이에 하나의 개정판과 다음 개정판이 있습니다.

그래서 Subversion은 병합 할 때 전체 파일을 비교하며 Mercurial (또는 Git)은 각 변경 세트를 개별적으로 비교합니다. 변경 집합을 다룰 때 충돌이 훨씬 적게 발생합니다.

+0

오를리? 나는 나의 질문에서 묘사 된 기본적인 갈등 상황만을 본다. – chalup