본문 바로가기
기타/툴 관련(윈도우&리눅스)

SVN 사용 방법

by WebHack 2010. 3. 30.
※ root@waf2:/tmp/svn/misc# svn commit
svn: Commit failed (details follow):
svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options
svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR is set, and no 'editor-cmd' run-time configuration option was found

위 에러시 밑에와 같이 환경을 설정해 주면 됨
export SVN_EDITOR=vim

0. svn 설치하기
    Debian, Ubuntu 의 경우 root 권한으로 apt-get install subversion 이라고 하면 한 번에 설치가 됩니다.
    Centos, Fedora, Redhat의 경우 root 권한으로 yum install subversion 이라고 하면 한 번에 설치가 됩니다.

1. 소스 repository 목록 보기
    $ svn list svn+ssh://계정@211.239.151.239/home/svn/os
    (만약 211.239.151.239 에 로그인해서 로컬 머신의 repository를 보시는 경우라면, $ svn list file:///home/svn/os 와 같이 하시면 됩니다)

    /home/svn/os/bootloader/lilo-21.4.4-2 가 바로, 우리가 해석한 lilo 소스코드입니다.
    (lilo-21.4.4-1 은 뭘까요? 전 기수 분들이 해석하신 코드같습니다)
    /home/svn/os/linux/linux-2.6.20.4-lksas3-x86_64 는, 우리가 이제부터 해석할 Linux kernel 소스코드입니다.

2. 소스 코드 받아 오기
    이제부터는 lilo를 예제로 사용하겠습니다.
    다음과 같이 하면 현재 사용하는 머신에 로컬 카피를 만들게 됩니다.
    $ svn co svn+ssh://계정@211.239.151.239/home/svn/os/bootloader/lilo-21.4.4-2

3. 받아둔 로컬 카피를 최신 상태로 update하기
    위와 같이 받아둔 로컬 카피에, repository의 최신 update를 적용시키는 방법입니다.
    이제부터 나오는 명령들은 다음과 같이 로컬 카피의 디렉토리에 들어가서 수행합니다.
    $ cd lilo-21.4.4-2
    $ svn update [파일명]
    로컬 카피를 건드리기 전에 svn update를 한 번 해 주는 게 좋을 것 같습니다.
    [파일명]을 안 쓰면 디렉토리 전체를 업데이트합니다.

4. 상태 보기 (자주 쓰이는 명령이라고 합니다!)
    $ svn status [파일명]

5. 내가 수정한 사항을 repository에 반영하기
    $ svn ci [파일명]
    svn ci 를 하기 전에 svn update를 한 번 해 주는 게 좋을 것 같습니다.

6. 수정 로그 보기
    $ svn log [파일명]
    더 자세히 보려면
    $ svn log -v

7. r8 (revision 8) 과 로컬 카피의 파일 비교
    $ svn diff -r8 [파일명]
    (-r 을 생략하면 repository의 최신 revision과 로컬 카피를 비교합니다)

8. 로컬 카피의 파일을 다시 repository와 같게 되돌리기
    $ svn revert [파일명]
    결국 이것은 로컬 카피에 가한 수정을 취소하는 것입니다.

9. 각 라인을 수정한 사람이 누구인지 보기
    $ svn blame [파일명]

10. repository에 없는 새 파일을 만들었으면
    $ svn add 파일명
    $ svn ci 파일명
    (svn ci 까지 꼭 해줘야 합니다)
그밖에 svn delete|copy|move|mkdir 등이 있습니다.

11. 파일에 락을 걸어 락을 건 사용자만이 수정할 수 있게 해주는 명령어
    $ svn lock 파일명
해제는 $ svn unlock 파일명
왜 파일에 락을 걸었는지 로그를 기록 할 수 있다.

참고 페이지

svn co svn+ssh://hojae@10.10.10.138/SVN_ROOT/enetner-waf  enetner-waf 

svn list svn+ssh://hojae@10.10.10.138/SVN_ROOT/utm/WAF/user/misc
http://10.10.10.138/cgi-bin/viewvc.cgi/elimnet-devel/WAF/user/misc/

* 리스트에 있는 목록 보기
svn list svn+ssh://ccabugi83@10.84.1.230:/home/svn/soligate1.5/trunk

* 디릭토리 생성
svn mkdir svn+ssh://ccabugi83@10.84.1.230:/home/svn/soligate1.5/trunk/ip_dump

* 처음 파일 올리기
svn import ip_dump svn+ssh://ccabugi83@10.84.1.230:/home/svn/soligate1.5/trunk/ip_dump

* svn에서 파일 가지고 오기
svn checkout svn+ssh://ccabugi83@10.84.1.230:/home/svn/soligate1.5/trunk/ip_dump

* ip_dump2폴더명으로 파일 가져오기
svn checkout svn+ssh://ccabugi83@10.84.1.230:/home/svn/soligate1.5/trunk/ip_dump ip_dump2

* 새로운 파일 만들었을 경우 추가 하기
svn add README

* 변경된 사항 있는걸 알려주기 (추가된 파일이 이때 svn에 올라가게 된다.)
svn commit

* 파일 가져오기 전에 업데이트 꼭하기
svn update