SVN Merge
총 3 가지 병합 모드가 있습니다.
- 변경 사항을 가져올 단일 경로 또는 URL을 허용합니다.
- 서로 다른 두 경로 또는 두 URL간의 변경사항 추출하는데 사용됩니다.
세 가지 모드 중 하나에서 변경 내용을 적용 할 대상은 병합을 수행중인 작업 복사본입니다.
아래는 실제 사용 방법 입니다.
Single path/URL merge
일반적으로 적용 가능한 모든 변경 사항을 직계 조상의 분기에 병합하기 위해 사용됩니다.
모든 적합한 변경 사항을 한 번에 병합하도록 선택할 수 있습니다.
‘동기화’병합이라고하며, 수정 선택 컨트롤을 사용하여 명시 적으로 정의 된 변경 집합을 병합합니다.이 컨트롤을 ‘cherrypick’병합이라고합니다.
변경 사항의 정확한 세트를 cherrypick하기 위해 revision(개정) 범위 및/또는 (enumaration)열거를 사용하여 수동으로 지정할 수 있습니다.
11-22, 25, 38 또는 아래에 표시된 ‘개정 선택’대화 상자를 사용할 수도 있습니다.
필요한 변경 사항을 확인하면 대화 상자에서 자동으로 변경 집합 사양을 작성합니다.
또한 ‘Revision Selection’대화 상자에서 개정판을 선택할 때 - 선택한 개정판이 나타내는 모든 변경 사항이 대상에 병합된다는 것은 직관적이고 이해할 수 있지만 수동으로 개정 범위를 입력 할 때 개정 범위는 두 개의 지정된 개정판 사이의 차이를 정의합니다.
수정의 차이는 정확히 무엇을 의미합니까?
간단합니다. 예를 들어, 리비전 5000 이후에서 리비전 5005까지 일어난 모든 변경 사항을 병합해야 할 수 있습니다.
이 경우 리비전 범위 5000-5005를 지정해야합니다. 즉, 두 개의 숫자를 뺄 때와 마찬가지로 5 개의 수정본 (5001, 5002, 5003, 5004 및 5005)의 변경 사항 만 코드에 병합됩니다.
두 개의 개정 사이가 아닌 변경이 필요할 때 개정에서 최대 개정까지 변경하면, 개정 범위의 시작 개정 x 호를 1 씩 줄여야합니다.
즉, 5000-5005 개정판의 모든 변경이 필요한 경우, 다음과 같이 리비전 범위를 지정해야합니다 : 4999-5005 및 리비전 5000도 포함됩니다.
‘Revision Selection’대화 상자는 선택된 가장 낮은 개정 번호를 자동으로 1 감소시켜 개정 선택 프로세스를 직관적으로 이해할 수 있게 합니다.
이전에 완료 한 것을 수정하기 위해 병합을 되돌려 야 할 경우 ‘Reversed merge’옵션을 선택하기 만하면됩니다.
option
- URL
- 원격 자원 위치를 지정합니다.
- Revisions
- 병합에 사용할 수정 범위를 지정합니다.
- Reversed merge
- 역 병합을 수행할지 여부를 지정합니다.
- Ignore Ancestry
- 병합하는 동안 Subversion®이 리소스의 조상을 무시해야하는지 여부를 지정합니다.
- Depth
- 병합으로 덮을 깊이를 지정합니다.
Reintegrate merge(재통합 병합)
Reintegrate merge
는 기능 브랜치의 변경 사항을 기능 브랜치의 바로 위 조상 브랜치로 다시 가져 오는 데 사용됩니다.
병합중인 지점과 병합중인 지점에 대해 동일한 변경 사항을 건너 뛸 수 있습니다. 이 모드의 대화 상자는 다음과 같습니다.
재 통합 병합에 대한 요구 사항은 다음과 같습니다.
working copy는 로컬 편집이나 리비전 혼합을 포함 할 수 없습니다.
이들은 일반적으로 어쨌든 병합하는 최상의 방법이지만 재 통합 모드에서는 엄격하게 요구 됩니다.
branch에서 trunk로 재 통합 병합이 완료되면 branch를 더 이상 사용할 수 없습니다.
새로운 트렁크 변경 사항을 올바르게 흡수 할 수 없으며 다시 트렁크로 재 통합 할 수 없습니다.
이러한 이유로, branch를 계속 사용하려면 branch를 삭제 한 다음 트렁크에서 다시 만드는 것이 좋습니다.
option
- URL
- 원격 자원 위치를 지정합니다.
- Revision
- 병합 할 리비전을 지정합니다.
Two paths/URLs merge
이 모드에서는 지정된 수정 버전이있는 두 소스 URL의 차이가 추출 된 다음 작업 사본 인 대상에 적용됩니다. ‘2 URL’모드의 대화 상자 스크린 샷은 아래와 같습니다.
SVN 도서 상태로, 대부분의 합병은 서로 조상 관계가 있는 tree를 비교하는 것을 포함합니다; 따라서 svn merge는 이 동작을 기본값으로 사용합니다.
그러나 경우에 따라 병합 명령을 사용하여 두 개의 서로 관련되지 않은 트리를 비교할 수 있습니다.
예를 들어 소프트웨어 프로젝트의 여러 공급 업체 릴리스를 나타내는 두 개의 소스 코드 트리를 가져올 수 있습니다.
두 개의 tree를 비교하기 위해 svn merge를 요청하면 전체 첫 번째 트리가 삭제되고 두 번째 트리가 추가됩니다.
이러한 상황에서 svn이 파일과 디렉토리 간의 관계를 무시하고 경로 기반 비교 만 수행하도록 할 것입니다.
그리고 ‘Ignore ancestry’옵션을 사용하면 SVN이 svn diff와 같이 작동하도록 할 수 있습니다.
option
- URL1
- 첫 번째 원격 리소스 위치를 지정합니다.
- URL2
- 두 번째 원격 리소스 위치를 지정합니다.
- Start revision
- 최소 병합 범위 개정 번호를 지정합니다.
- Stop revision
- 최대 병합 범위 수정 번호를 지정합니다.
- Ignore Ancestry
- 병합하는 동안 Subversion®이 리소스의 조상을 무시해야하는지 여부를 지정합니다.
- Depth
- 병합으로 덮을 깊이를 지정합니다.
Preview
버튼을 사용하면 작업 사본에 실제 변경 사항을 적용하지 않고 병합 작업의 결과를 검사 할 수 있습니다.