svn merge

tip 2013.04.27 12:42
 
branch에서 작업한 내용을 trunk에 머지 시킬때

1. 일단 trunk에서 branch를 가지고 왔을때의 리비전을 확인해야 한다.
$ cd dev/branch/1.0
$ svn log --stop-on-copy 
branch를 checkout 받은 디렉토리에서 --stop-on-copy를 해주면 과거에 copy 명령이 일어난 지점까지만 로그를 보여준다.
해서 가장 아래에 있는 리비전을 확인하도록 한다. (copy가 일어난 시점의 리비전)

2. 그리고는 trunk를 checkout 받은 디렉토리에 가서 --dry-run 옵션으로 머지를 시도해본다. (머지하는데 확신이 든다면 이 과정은 생략해도 된다)
머지는 아까 확인한 copy가 일어난 시점의 리비전과 HEAD를 비교하여 이루어진다. (여기서는 2671 리비전이라고 가정) 
$ cd dev/trunk
$ svn merge --dry-run -r2671:HEAD svn://svn.example.co.kr/project/branches/1.0 ./
(--dry-run 옵션에 대해서는 여기에 정리를 해두었으니 참고)
해서 머지가 실행됬을때의 결과를 확인할 수 있다. 

3. 대충 훑어보고 원하는 결과가 맞다면 실제로 머지를 실행. (위 명령에서 --dry-run 옵션만 빼면 된다)
$ svn merge -r2671:HEAD svn://svn.test.co.kr/project/branches/1.0 ./ 
머지가 실행된 후 충돌이 난 파일들은 작업자가 확인 후에 충돌을 해소한 후에 trunk로 최종 커밋을 해주면 된다.
충돌난 파일들의 임시파일들은 svn resolved 명령어로 해결. (이곳 참고)

간혹 한번 생성해서 trunk로의 머지까지 완료된 branch를 머지된 이후에도 계속 사용하는 경우가 있는데
이 경우 해당 branch에서 새로운 프로젝트 작업 후 trunk로의 머지를 할 경우에는 리비전 명시에 주의를 해야 한다.
처음 merge시에는 copy된 리비전을 알기위해 --stop-on-copy 옵션을 썼지만, 같은 브랜치를 두번째로 merge 할 경우에는 첫번째 머지한 이후의 리비전과 HEAD를 비교해야 하므로, 첫번째 머지했을때의 리비전을 작업자가 관리해야 하는 불편함이 생긴다.
그래서 되도록이면 두번째 프로젝트를 시작할 경우에는 머지가 완료된 해당 브랜치를 그대로 사용하기보다, trunk에서 새로운 브랜치를 copy해와서 작업하는게 더 좋을 듯 하다.

'tip' 카테고리의 다른 글

http, https 혼용 Ajax 레이어팝업 로그인과 처리  (0) 2013.04.27
CDATA 섹션[XML 표준]  (0) 2013.04.27
svn merge  (0) 2013.04.27
윈도우 7에서 인터넷 연결이 안되다  (0) 2013.04.27
개발환경 설치  (0) 2013.04.27
sc command  (0) 2013.04.27
Trackback 0 : Comment 0