'Tool/Subversion'에 해당하는 글 17건

svn log

Tool/Subversion 2012. 11. 7. 00:20

특정 리비전의 변경 내용을 확인하고 싶을 때는 log 명령을 사용합니다.

 

 

log
usage : svn log [REV] [PATH]

 

특정 리비전의 로그 메시지를 확인할 수 있습니다.
-r 옵션으로 특정 리비전을 지정하거나 시작리비전:마지막리비전을 지정할 수 있습니다.
-v 옵션으로 상세 로그를 확인할 수 있습니다.

 

$ svn log -r 10
------------------------------------------------------------------------
r10 | oops4u | 2012-10-31 00:09:47 +0900 (Wed, 31 Oct 2012) | 1 line

fixed main contents by oops4u
------------------------------------------------------------------------

$ svn log -v -r 15
------------------------------------------------------------------------
r10 | oops4u | 2012-11-05 22:26:47 +0900 (Mon, 05 Nov 2012) | 1 line
Changed paths:
   M /trunk/index.html
   M /trunk/welcome.html

fixed index by oops4u
------------------------------------------------------------------------

$ svn log -r 10:15


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

svn cleanup

Tool/Subversion 2012. 11. 6. 23:50

특정 명령을 수행하는 중에 네트워크가 끊긴다던지, 작업자가 강제 중단을 한다던지 했을때.
중단된 수행을 재개하고 로그파일을 삭제하는 명령이 cleanup 입니다.

 

 

cleanup
usage : svn cleanup [PATH...]

 

재귀적으로 작업 사본을 순회하면서 정리합니다. 잠금을 제거하고, 중단된 명령을 재개합니다.
SVN은 어떤 명령이 작동하기 전 로그파일이 생성되고, 명령이 완료되면 로그파일을 삭제하는 방식이며,
어떠한 방해로 인해 명령이 중단되고 로그파일이 남아있을 경우 작업물에 잠김(L) 표시와 함께 해당 파일은 잠기게 됩니다.
이 때 cleanup 명령으로 중단된 작동을 재개시켜 명령을 완료하고 잠김 상태를 해제하고 로그파일은 삭제될 것입니다.

 

$ svn st
  L    . /somedir
M      . /somedir/foo.c
$ svn cleanup
$ svn status
M      . /somedir/foo.c

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

svn lock / unlock

Tool/Subversion 2012. 11. 6. 23:23

저장소나 작업사본의 특정 파일을 작업자들이 실수로 변경하는 것을 방지하기 위해
lock 을 걸거나 unlock 으로 잠금을 해제할 수 있습니다.

 

 

lock
usage : svn lock TARGET...

 

다른 유저들이 변경할 수 없도록 작업사본의 PATH나 저장소의 URL을 잠급니다.
다른 유저들이나 작업 사본으로부터 잠겨진 것들을 --force 옵션을 사용하여 잠금 권한을 가져올 수 있습니다.

 

$ svn lock txt.c
'txt.c' locked by user 'oops4u'.
$ svn st -u
     K       8   txt.c

 

작업 사본의 txt.c 를 잠근 후 토큰(K) 확인.
oops4u 사용자는 txt.c 를 변경이 가능하며 다른 사용자는 변경할 수 없음.

 

 

unlock
usage : svn unlock TARGET...

 

작업 사본의 PATH나 저장소의 URL의 잠금 상태를 해제합니다.
--force 옵션을 사용하면 잠금을 깰 수 있습니다.

 

$ svn st -u
     K       8   txt.c
$ svn unlock txt.c
'txt.c' unlocked.


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

svn revert

Tool/Subversion 2012. 11. 5. 00:02

최신 리비전으로 update 후에 하나의 파일을 수정했다면 그 파일의 상태는 M(수정)이 될 것입니다.
이 때 수정 이전의 파일 상태로 되돌리려 한다면 저장소의 파일을 다시 받기 위해 update 하면 상태가 되돌려질까요?
그렇지 않습니다. 이미 첫 update 때 동일한 리비전으로 동기화 되었기 때문에 update 를 해도 변화가 일어나지 않습니다.
이 때 revert 명령을 사용하면 작업 사본의 마지막 리비전 상태로 파일 복구가 가능합니다.

 

 

revert
usage : svn revert PATH...

 

작업 사본 파일을 수정 전으로 되돌립니다.
네트워크 접속이 요구되지 않고, 충돌 상태는 해결하지 않습니다.

 

$ svn del uc
D         uc/working.jpg
D         uc/index.html
D         uc

$ svn revert -R uc
Reverted 'uc'
Reverted 'uc/working.jpg'
Reverted 'uc/index.html'

 

del 명령으로 uc 디렉토리와 하위 파일들 모두 삭제 예약 했지만, -R 옵션으로 하위 파일들까지 모두 복구 하였습니다.

 

$ rm test.c
$ svn st
!         test.c

$ svn revert test.c
Reverted 'test.c'

$ ls test.c
test.c

$ svn st
$

 

svn 명령이 아닌 일반 삭제 명령으로 버전관리 작업물을 삭제하였을 경우,
상태 명령은 느낌표(!)를 반환합니다. 버전관리 하던 파일이 예고없이 없어졌기 때문입니다.
이 경우에도 revert 명령으로 되돌릴 수 있습니다.


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

update 시에 충돌이 났을 경우 즉시 해결도 가능하지만,
(p)ostpone 을 선택했을 경우 충돌(C) 상태는 resolve 와 resolved 명령으로 충돌 해결이 가능합니다.
충돌 해결이란 보통 머지(G) 나 수정(M) 상태로 만드는 것을 말합니다.
resolve / resolved 명령은 비슷해 보이지만 다릅니다.
resolve 명령은 여러 옵션을 사용할 수 있지만 resolved 명령은 간단합니다.

 

 

resolve
usage : svn resolve --accept ARG [PATH...]

 

작업 사본 파일이나 디렉토리들의 충돌을 해결합니다.
파일의 상태가 충돌(C)일 경우 .mine .r1 .r2 등의 파일들이 생성되었을 때,
생성된 파일들을 삭제하고 충돌을 해결하기 위해 사용됩니다.
충돌난 내용을 모두 숙지 후에 행해야할 명령어 입니다.
ARG 는 다음 중 하나의 옵션이 포함되어야 합니다.

 

base : 작업 사본을 갱신하기 전의 리비전(BASE)의 파일을 선택
working : 현재 작업 사본의 충돌 파일을 수동으로 해결하기 위해 충돌난 부분이 명시된 파일 선택 (수동 수정 필요)
mine-conflict : 충돌난 부분만 본인이 작업한 파일로 선택
theirs-conflict : 충돌난 부분만 타인이 작업한 파일로 선택
mine-full : 전체 내용을 본인이 작업한 파일로 선택
theirs-full : 전체 내용을 타인이 작업한 파일로 선택

 

$ svn st
?       test.html.r67
?       test.html.r68
?       test.html.mine
C       test.html
$ svn resolve --accept working test.html
Resolved conflicted state of 'test.html'

$ svn st
M       test.html

 

 

resolved
usage : svn resolved PATH...

 

작업 사본 파일이나 디렉토리들의 충돌(C) 상태를 제거합니다.
이 명령은 실제로 충돌을 해결하지 않고, 충돌 표시만 없앱니다.
충돌에 관련되어 생성된 파일들을 제거하며, PATH는 다시 커밋할 수 있는 상태가 됩니다.
"svn resolve --accept working" 실행과 동일하게 처리됩니다.

 

$ svn update
Updating '.':
C    foo.c
Updated to revision 31.
Summary of conflicts:
  Text conflicts: 1

$ svn resolved foo.c

 

충돌 발생시 해당 파일을 수정 후에 이 명령을 이용하면 .mine .r(base) .r(prev) 가 자동 삭제되어 유용합니다.

위 예제들에서 보다시피 두 명령의 차이라면,
$ svn resolve --accept working test.html 명령을 사용하려 한다면
$ svn resolved test.html 명령을 사용하는 것이 더 편리하다... 는 점입니다.

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,