본문 바로가기

따라해보자/Subversion

[svn] a clash of views - part2

반응형
충돌해소

- 참고
서브버전을 이용한 실용적인 버전관리 - 정보문화사
http://occam.n4gate.com/ - 번역하신 류광님 블로그
http://www.pyrasis.com/main/Subversion-HOWTO - 한글 설치 가이드

1. aladdin 과 sesame 의 파일을 각각 수정하고 먼저 aladdin 의 파일을 체크인합니다.
지난번 설명했던 -m 옵션없이 한번 가봅니다.
svn commit 하는 순간 메모장이 툭 튀어나옵니다.
내용쓰고 저장해주면(그냥 닫아도 되는듯 한데..ㅠㅠ)
체크인 처리가 완료됩니다. 이제는 리비전 4

사용자 삽입 이미지

사용자 삽입 이미지

2. 이번에는 역시 수정된 내용을 가지고 sesame 에서 체크인하려고 하면 이전에 본것처럼
커밋 실패가 됩니다.
이미 최신의 내용이 갱신되었기때문이지요.
사용자 삽입 이미지

3. 그래서 일단 최신 리비전으로 업데이트 합니다.
이전 상태와 다른 점은 수정하지 않고 업데이트를 하는 상황이었는데
이번에는 자신도 수정을 한 상태에서 업데이트를 하게 되죠.
그 상태표기가 G 로 표기가 됩니다.
그리고 해당 파일을 열어보면 자신의 수정한 내용과
최신의 수정내용이 병합된것을 볼 수 있습니다.
* 병합은 merge  에서 나오는 G 를 의미하는 걸까요..

사용자 삽입 이미지

4. 이 흥미로운 병합본은 sesame 의 로컬에만 있는 겁니다.
이제 이 파일을 체크인 해줍니다.
그리고 aladdin 도 새로운 파일을 업데이트 해줍니다.
사용자 삽입 이미지

5. 이전 1~4 의 상황과는 조금 다른 부분이 이전에는 서로 다른 영역을 수정하였으나
이번에는 같은 라인을 수정합니다.
실제 업무상에서는 그럴일이 별로 없겠지만
일단 테스트니깐..그렇게 해봅니다.

aladdin 이 먼저 수정하고 체크인합니다.

사용자 삽입 이미지

6. sesame 가 뒤늦게 체크인하려고 하지만 실패하게 되죠.
그래서 업데이트를 해봅니다.
업데이트는 되었지만 생소한 메시지가 나옵니다.
C
사용자 삽입 이미지

7. 폴더의 내용도 작업본외에 몇개의 파일이 추가적으로 생성되었습니다.

사용자 삽입 이미지

8. 여기서 C 는 무언가 충돌이 일어났다는 표현입니다.
이전 상황에서는 서로 다른 영역에서 작업을 했기때문에 달라진 부분을 병합만 해주고 해당 내용을 알려주면 되었는데 충돌이 나는 상황에서는 프로그램이 자동으로 무언가 해줄수는 없게 됩니다.
사용자에게 내용을 알려주고 선택하게 되는 형식을 취하게 됩니다.

아래 내용을 보면 현재 폴더에서 작업한 내용과 리비전6 에서 작업된 내용을 비교해줍니다.
사용자 삽입 이미지

9. 해당 리비전에 대한 로그를 확인할 수 있습니다.

사용자 삽입 이미지

10. 이런 경우 각 담당자가 이야기를 통해서 선택을 하게 됩니다.
그리고 파일을 수정하고나면 해당 내용을 서브버전에게도 알려줍니다.
그럼 7번에서 추가적으로 생성된 파일들도 알아서 사라집니다.

이제 리비전 7 로 체크인 합니다.
사용자 삽입 이미지

11. aladdin 도 새로운 파일로 업데이트 처리해주면 서로 최신의 파일을
잘 조정하여 획득하게 됩니다.
사용자 삽입 이미지

728x90