====== Subversion Conflict ======
===== SVN 파일 충돌 =====
- 소스를 수정할때, 다른 사용자가 동일한 파일을 수정해 commit을 해버린 경우, 해당 파일을 commit하려할때 충돌이 발생한다.
- SVN을 commit 이나 update를 할때 파일 충돌(conflict)이 발생할 수 있다.
===== 예제 =====
$ svn update
Conflict discoverd in 'admin/school.java'.
Select : (p) postpone, (df) diff-full, (e) edit,
(h) help for more options:
===== 해결방법 =====
- Subversion은 conflict가 일어난 파일을 수정한 후에 문제를 해결했다는 표시를 줘야 해결이 된 것으로 간주한다.
- conflict가 일어나면, \\ 내가 수정한 버전 school.java.mine, \\ 기존 커밋된 최종버전 school.java.r19, \\ 내가 checkout 했던 최종 버전 school.java.r13 과 같은 임시 파일들이 생겨나는데, \\ 버전 충돌 문제를 해결한 후에 svn resolved [filename] 명령어를 실행시켜주면 임시 파일들도 자동으로 삭제가 되며 수정한 파일은 commit 을 할 수 있는 merge 상태로 바뀌게 된다.
- 내가 가지고 있는 소소로 모든 대체하고 싶을때는 다음 명령을 실행한다.
svn resolved -R ./
^ p | 나중에 해결한다. \\ 충돌이 발생한 파일 내에 <<<<, >>>>로 표시가 된다. \\ 내가 편집한 내용은 .mine 파일에 저장되고, \\ 저장소에서 가져온 파일은 .리비전번호가 된다. |
^ df | 변경된 부분을 전부 다 보여준다. |
^ e | 병합된 파일을 에디터로 수정한다. |
^mf | 내 파일(my file)을 의미한다. \\ 저장소에 있는 파일을 표현 |
^ tf | 그들의 파일(their file)을 의미, \\ 내가 편집한건 무시. \\ 서버에 있는 파일로 강제 업데이트 |
^ r | 충돌이 해결되었다고 표시. \\ 내가 편집한 내용으로 저장 |