favicon Jay Lee DevLog

728x90
300x250

SVN 사용하면서 자꾸 까먹거나 헷갈리는 명령어들 정리하려 한다.

윈도우에서는 그냥 마우스 우클릭 누르면 메뉴가 다 나오기 때문에

사용하는데 문제가 없지만,

리눅스는 cli 환경이기에..커맨드를 입력해서 사용해야 한다.

뭐 설치하고, 레포지토리 만들고 이런건 생략한다.

나는 이미 만들어진 레포지토리를 사용하기 때문이다.


1. svn info

현재 내가 사용중인 경로의 svn 정보를 알아오는 명령이다.

여기서 URL 정보를 알아올 수 있는데 해당 정보로 Checkout을 하기 때문에

나는 보통 URL 정보를 알아오기 위해 많이 쓰는것 같다.

위와 같이 정보가 출력된다.

2. svn checkout

말 그대로 체크아웃, 소스를 내려 받는다는 소리다.

소스를 내려받기 위해서는 일단 내가 내려받을 소스의 URL을 알아와야 한다.

위에서 설명한 svn info를 실행하여 URL 정보를 알아올 수 있으며,

해당 정보로 svn checkout "URL" 을 실행하면 소스가 받아진다.

참고로 URL에 계정이 들어가는 경우가 있는데, 이런 경우 본인의 계정으로 바꿔서 넣어주면 된다.

 

3. svn log

말그대로 해당 파일의 수정 내역을 확인할 수 있는 명령어다.

보통 commit을 할 때 수정내역을 넣어서 올리는데

그 항목을 볼 수 있다.

다만, 오래된 소스일수록 해당 로그가 굉장히 많이 나오기 때문에,

-l 옵션을 통해 결과 수를 제한할 수 있다.

예를 들면, svn log -l 10 "파일명" 이런식으로 하면

최근 10개의 로그만 확인할 수 있다.

 

4. svn diff

특정 파일이나, 폴더의 바뀐 사항을 확인할 때 사용하는 명령이다.

옵션을 통해 리비전 값을 넣어주면 현재의 리비전과 설정된 리비전의 내용을 비교해준다.

여러 옵션들이 있는데, 그때 그때 인터넷에서 찾아서 사용하는 것 같다.

일단 가장 자주 쓰는 옵션은 '-r' 이다.

svn diff -r "리비전 값" "파일명"

위와 같이 나오고

'+' 로 표시된 부분은 추가된 부분이고,

'-' 로 표시된 부분은 삭제된 부분이다.

 

5. svn update

최신 소스를 받아오는 명령이다.

svn update 그대로 쓰면, 현재 URL의 변경 내역을 모두 업데이트하는 거고,

svn update "경로"를 사용하면, 해당 경로의 파일들만 업데이트 한다.

 

6. svn commit

작업한 내용을 반영하는 명령이다.

해당 명령을 실행하면 현재 내가 작업한 내용이 레포지토리에 저장되고,

타인이 소스를 내려받으면 내가 작업한 내용이 반영되어 받아진다.

그래서 항상 신중하게 해야하고, -m 옵션을 통해 변경 내용에 대한 코멘트를 남기는 것이 기본이다.

svn commit "파일명" -m "변경 내용에 대한 코멘트"

해당 명령을 실행하면 결과가 반영되고,

svn log를 쳤을때 변경 내용에 대한 코멘트가 나오게 된다.

항상. commit 후에는 svn diff를 사용하여 자신이 변경한 내용만 반영되었는지 잘 확인해야 한다.

 

주의할점은 내가 commit을 하려는데 다른 사람이 변경한 부분과

내가 변경한 부분이 겹칠 경우에 에러가 나거나, 내용이 겹친다고 알려주는데,

이럴 때 해결방법은 여러가지겠지만

나는 그냥 내 소스를 따로 빼두고, update한 다음에

수동으로 내가 수정한 내용을 다시 추가한다.

자동merge도 해보고 다 해봤지만,

그냥 이렇게 하는게 마음이 제일 편하고,

문제될 일도 없는 것 같다.

 


내가 사용하는 커맨드는 이정도다.

윈도우에서는 특정사용자만 변경가능하도록 lock도 걸고 하는 기능도 있다만,

linux에서는 사용할 일이 딱히 없을 것 같다.

728x90
반응형

'그외 > SVN' 카테고리의 다른 글

local unversioned, incoming file add upon update  (1) 2025.04.23

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.