티스토리 뷰

728x90

 

"서브버전(Subversion) 브랜치 만들기"에 이어진 포스팅이다. 위의 그림처럼 메인 트렁크(Trunk)에서 분기하여 생성한 브랜치(Branch)와 트렁크가 각각 독립적으로 개발을 진행한 상태에서 브랜치에서 새롭게 개발한 기능을 메인 트렁크에 반영하고자 한다. 

 

 

일단, 트렁크의 작업 사본 폴더로 이동하여 최종 상태로 SVN Update 하고 커밋하지 않은 변경 사항이 있다면 커밋을 수행하여 머지

과정의 충돌(Conflict)을 최소화한다. 트렁크 작업 사본 폴더의 작업 준비를 마쳤으면 TortoiseSVN > Merge를 선택한다.

 

 

브랜치의 리비전을 지정해서 머지하는 방법도 있지만 트렁크 트리와 브랜치 트리와의 차이를 현재의 작업 사본에 반영하는 방식으로 수행한다. "Merge two different trees"를 선택하고 [Next]를 클릭한다.

 

 

[...] 버튼을 활용하여 "From:"에 트렁크의 URL을 선택하고 "To:"에 브랜치의 URL을 선택하고 [Next]를 클릭한다. 이 비교 방식은 트렁크보다 브랜치의 내용이 최신 것이라는 시각으로 비교를 진행한다.

 

 

머지 옵션을 선택하는 화면으로 원하는 옵션을 있다면 적용하고 [Test merge]를 눌러서 가상의 작업을 수행한다. 

 

 

[Test merge]를 누르면 실제 작업을 수행하지 않으면서 머지 결과를 미리 확인해 볼 수 있다. 실제 작업에 문제가 없다고 보이면 [OK]를 눌러서 창을 닫고 앞선 화면에서 [Merge] 버튼으로 머지 작업을 실제로 진행한다.

 

 

실제 머지 작업을 진행한 화면이다.

 

 

머지 작업이 완료되었다는 이야기는 현재의 작업 사본에 트렁크와 브랜치와의 차이점을 반영했다는 의미이고 위의 그림처럼 커밋해야 최종적으로 작업을 완료할 수 있다. 

 

그렇지만, 커밋 이전에 충돌(Conflict)이 존재한다면 충돌이 발생한 곳의 코드를 적절하게 수정하고 충돌 해소(Resolve) 작업을 수행해야 한다. 또한, 변경된 코드들을 일일이 확인하여 머지 과정에서 변경 사항이 누락되지 않도록 한다. 예를 들어, 브랜치 생성 이후에 브랜치가 아니라 트렁크에서 수정된 내용들은 머지 작업 과정에서 삭제될 수 있는데, Diff 과정에서 작업 사본(트렁크)의 내용을 적용하여 해당 코드들이 삭제되지 않도록 커밋 이전에 꼭 확인해야 한다.

 

 

728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함