메타 데이터 부족이 더 이상 발생하지 않을 때 v1.5 이전의 SVN 병합에 대한 불편 함이 더 이상 사용되지 않습니까?


11

SVN을 시작하고 있으며 DVCS 도구와 비교할 때 SVN에서 병합이 매우 어렵다고 많은 소스에서 말합니다. 가장 최근의 질문에 내가 SE 여기에 찾을 수는 2012입니다.

그 이유는 v1.5 이전의 SVN에는 메타 데이터가 없었지만 SVN의 버전이 1.8.9이기 때문입니다.

SVN이 v1.5보다 훨씬 더 성숙하고 특히 SVN 1.5를 사용하지 않았기 때문에 언급 된 메타 데이터 부족으로 어려움을 겪지 않는다는 사실을 고려할 때 SVN 에 대한 주장에는 여전히 타당성이 있습니까?

DVCS에는 완전히 다른 접근 방식이 더 바람직하다는 것을 이해하지만, 어떤 이유로 든 SVN을 "필수"해야하는 사람들에게는 병합이 더 이상 "지옥"이 아닌가?


3
@ TorbenGundtofte-Bruun-지금은 그런 대답을 할 시간이 없지만 "SVN을 두려워하지 마십시오"라고 말할 것입니다. 그것은 제한이 있지만 DVCS도 마찬가지입니다.
kdgregory

답변:


15

그것은 잘 작동 당신이 간단한 경우에 충실하면 ,하지만하지 않는 일부 복잡한 사람이있다.

내가 생각할 수있는 한계 :

  • 관련된 지점 중 하나에있는 경우 가장 최근의 조상 만 찾을 수 있습니다. 그래서 당신은 만드는 경우 branches/thisbranches/that모두에서 trunk병합하려고 다음과 branches/this하기 위해 branches/that, 그것은 무엇을 알 수 없습니다. 이는 지점과 상위 지점에서만 병합 할 수 있음을 의미합니다. 두 개의 기능 분기를 시작한 후 나중에 기능이 상호 종속적이고 기능을 결합해야 함을 인식하면이 문제가 발생할 수 있습니다.

  • 이름을 추적 할 수 있다고 주장하지만 파일을 한쪽으로 이동하고 다른 쪽에서 수정했을 때 분기를 병합한다고해서 항상 올바른 파일을 병합하지는 않으며 수동으로 파일을 수정하는 것은 필요한 정보를 어디에도 남기지 않으므로 다소 지루합니다. 손.

  • 추가 된 파일로 인해 나중에 병합 할 때 가짜 충돌이 발생할 수 있습니다.

  • 서브 버전에는 별도의 브랜치 개념이 없으므로 프로젝트의 서브 트리 만 병합 할 수 있으며 이로 인해 큰 혼란이 발생할 수 있습니다. 항상 완전한 지점을 병합하도록주의하는 것이 좋습니다. 불행하게도 어떤 이유로 병합 정보 속성은 하위 디렉토리에 불필요한 것처럼 보이고 병합이 전체 분기에 올바르게 수행 된 경우에도 하위 디렉토리에 나타납니다.

  • 마지막으로 속도느립니다 . 어떤 심각한 크기의 프로젝트에 병합은 종종 대부분의 DVCS이 그것을 할 수있는 분 소요 에서 두 번째.


+1, 좋은 답변입니다. 공통 조상에 관한 요점은 내가 찾아봐야 할 것입니다. 이러한 사실에 대한 언급이 있습니까?
Doval

1
@Doval : 경험.
Jan Hudec

가능성도 언급 할만큼 가치는 SVN 나던 것을 하나의 태그 별도의 개념이
JK합니다.

첫 번째 글 머리 기호 (매우 명확한 설명 감사합니다!)와 관련하여 기능 분기와 동일한 분기점이있는 누적 분기를 사용하여 해결할 수 없습니까? ( Vance98 기반 ) 두 기능 분기에 서로 다른 분기점이있는 경우에만 문제가 발생합니까?
Torben Gundtofte-Bruun

@ TorbenGundtofte-Bruun : 가장 최근의 공통 조상이 분기점 일 필요는 없습니다. 직접 찾아서 특정 페그 개정 사이에 변경 사항을 적용하도록 서브 버전을 지시 할 수 있습니다. 그러나 문제는 그것이 많은 작업이고 그것을해야한다는 것을 깨달아야한다는 것입니다. 서브 버전은 합쳐질 수 없다는 말을 버릴 필요가 없기 때문입니다. 대신 가장 최근의 공통 조상을 찾아서 많은 충돌을 일으킨다.
Jan Hudec

1

내 경험상 SVN 병합은 버전 1.6에서 '고정'되었습니다. 나는 Mercurial과 SVN 모두에서 일하고 있으며 SVN 버전 1.6 이후로 병합은 두 플랫폼에서 거의 같은 양의 작업으로 보입니다. 한 가지 예외는 --reintegrateSVN을 사용하여 지점에서 트렁크로 다시 병합 할 때 옵션 을 제공해야 한다는 점입니다.

이것은 나의 운영 경험 일뿐입니다. 나는 SVN의 내부에 대해 아무것도 모른다.


2
1.8은 마침내 "재 통합"사례 자체를 감지 할 수 있습니다. 그러나 그것은 로컬 또는 원격에서 가장 최근의 공통 조상을 돌보는 것입니다. 여전히 세 번째 지점에서 찾을 수 없습니다.
Jan Hudec
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.