'서브버전 충돌 해결'에 해당되는 글 2

  1. 2010.10.18 소스 병합(Merge) Tip
  2. 2010.07.21 Eclipse에서 브랜칭, 태깅하기

소스 병합(Merge) Tip

1. 먼저 SVN Repositories에서 trunk의 History를 확인한다.
trunk의 변경사항을 알면 merge 작업시 도움이 된다.
(어떤 파일을 수정했는지)

2. 충돌난 소스를 확인한다. : 아주 많을것이다.

3. trunk에서 변경된 파일을 확인한다. : 이 부분은 branch에서도 같은 부분을 작업했을수도 있으므로 자세히 확인한다.

4. 나머지 충돌난 파일은 branch에서 작업한 내용이므로 한꺼번에 충돌을 해소해도 된다.(Edit Conflict, Mark as Merged)

- trunk에서는 존재하는 파일인데 branch에서 삭제한 파일은 추가된 이미지(
)로 보인다.
JEE Perspective에서 직접 삭제한다.

- Override and Update로 잘못 받은 파일은 Revert하면 된다.
(어차피 merge는 로컬에서만 발생하였다.)

- branch에서 어떤 부분을 수정했는지 보려고 할때 trunk와 머지해보면 알수 있다.
머지하면 로컬 소스가 변경되므로 Revert 기능으로 되돌리면 된다.
(이때 branch에서 삭제되어서 trunk와 머지하면 추가되는 파일은 Revert를 해도 안지워진다. 직접 지운다. 그리고 나서 branch와 동기화를 해본다.)

Eclipse에서 브랜칭, 태깅하기

Merge하는 부분은 여기를 참고하는 것이 더 좋다.

지금 현재 개발 프로세스는 운영기에 소스를 적용한 뒤에 SVN 저장소에 커밋을 한다.
개발 브랜치를 따로 가져가서 소스를 관리하자.

- 먼저, 브랜치를 만든다.
Subversive를 사용하면 branches/가 이미 만들어져 있다.

브랜치 이름은 Trac 마일스톤 이름(또는 티켓 번호)과 동일하게 가져가면 좋을 거 같다.

- 브랜치에서 작업을 하고 커밋을 한다.

- 메인 스트림으로 돌아와서(Switch) 병합한다.(Merge)
URL은 수정 작업을 한 브랜치의 URL을 선택한다.[각주:1]
리비전을 선택할 수도 있다.

- 충돌이 나는 경우 소스 비교가 제대로 되지 않으므로 주의한다.
소스를 검토해서 수정후 Mark as Merged를 하면 충돌 표시가 사라진다. 커밋한다.
trunk에 있는 소스 리비전은 47
그래서 Remote File에 보이는 리비전도 47이다.
branches에서 merge한 소스는 48이다.(int balance //branch)
Edit Conflicts를 하면 오른쪽 뷰어(Repository로 표시됨, 지금은 Remote File 47)는 다른 리비전을 보여주고 Working 소스는 현재의 리비전인 47을 보여주기 때문에 소스 비교하기가 힘들다.
직접 수정하는 것이 편하다.

- 자주 병합을 해서 빅뱅을 피하라고 함.

- Revert 기능을 이용하면 병합하기 전으로 되돌릴 수 있다.

- 특정 리비전에 의미있는 태깅을 할 수 있다.
  1. 이 경우는 메인 스트림(trunk)에서 로 입력한 브랜치를 가져오게 된다. [본문으로]