목차

Subversion Conflict

SVN 파일 충돌

  1. 소스를 수정할때, 다른 사용자가 동일한 파일을 수정해 commit을 해버린 경우, 해당 파일을 commit하려할때 충돌이 발생한다.
  2. 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:

해결방법

  1. Subversion은 conflict가 일어난 파일을 수정한 후에 문제를 해결했다는 표시를 줘야 해결이 된 것으로 간주한다.
  2. conflict가 일어나면,
    내가 수정한 버전 school.java.mine,
    기존 커밋된 최종버전 school.java.r19,
    내가 checkout 했던 최종 버전 school.java.r13 과 같은 임시 파일들이 생겨나는데,
    버전 충돌 문제를 해결한 후에 svn resolved [filename] 명령어를 실행시켜주면 임시 파일들도 자동으로 삭제가 되며 수정한 파일은 commit 을 할 수 있는 merge 상태로 바뀌게 된다.
  3. 내가 가지고 있는 소소로 모든 대체하고 싶을때는 다음 명령을 실행한다.
    svn resolved -R ./
p 나중에 해결한다.
충돌이 발생한 파일 내에 ««, »»로 표시가 된다.
내가 편집한 내용은 .mine 파일에 저장되고,
저장소에서 가져온 파일은 .리비전번호가 된다.
df 변경된 부분을 전부 다 보여준다.
e 병합된 파일을 에디터로 수정한다.
mf 내 파일(my file)을 의미한다.
저장소에 있는 파일을 표현
tf 그들의 파일(their file)을 의미,
내가 편집한건 무시.
서버에 있는 파일로 강제 업데이트
r 충돌이 해결되었다고 표시.
내가 편집한 내용으로 저장