====== 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 | 충돌이 해결되었다고 표시. \\ 내가 편집한 내용으로 저장 |