A day with Subversion

Author: 서상현
Date: 2008-06-11

사과의 말씀

준비를 제때 안해서 시간 부족으로 Windows에서 사용을 다루지 못했습니다. 실습은 SPARCS에서 합니다.

설치하기

무엇에 쓰는 물건인고?

Subversion?

$ subversion
-bash: subverion: command not found
$ # 뭥미?

svn!

$ svn
사용법은 'svn help'를 통해 볼 수 있습니다.

svn help

$ svn help
사용법: svn <subcommand> [options] [args]
Subversion 명령행 클라이언트 버전 1.4.2.
'svn help <subcommand>'를 사용하여 특정 명령에 대하여 도움말을 얻으십시오.
...

명령

가능한 명령:
   add
   blame (praise, annotate, ann)
   cat
   checkout (co)
   cleanup
   commit (ci)
   copy (cp)
   delete (del, remove, rm)
   diff (di)
   ...

svn help add

$ svn help add
add: 파일과 디렉토리를 버전관리 대상에 넣습니다. 저장소에
추가하도록 스케쥴링 되며, 다음 커밋할 때, 추가됩니다.
사용법: add PATH...

???

용어

용어 설명

저장소 만들기

$ svnadmin create repo
$ ls
repo

저장소 안에는 무엇이?

$ ls repo
README.txt conf dav db format hooks locks
$ cat repo/README.txt
This is a Subversion repository; use the 'svnadmin' tool to examine
it.  Do not add, delete, or modify files here unless you know how
to avoid corrupting the repository.

번역

이 디렉토리는 서브버전 저장소입니다. 'svnadmin' 명령을 사용하세요. 마음대로 파일을 추가, 삭제, 변경하면 저장소가 망가질지도 모릅니다.

작업 사본 꺼내기

$ svn help co
checkout (co): 작업사본을 저장소로부터 꺼냅니다.
usage: checkout URL[@REV]... [PATH]
...
$ svn co file:///home/tinuviel/svn/repo wc
체크아웃된 리비전 0.
$ ls
repo wc

작업 사본 안에는?

$ ls wc
$ # 아무 것도 없어요. :)

안녕 세상!

$ cd wc
$ vi hello.c
#include <stdio.h>
int main() {
    printf("Hello, world!\n");
    return 0;
}

커밋 전엔 테스트

테스트

$ make hello
cc     hello.c   -o hello
$ ./hello
Hello, world!

커밋!

$ svn st
?      hello
?      hello.c
$ svn add hello.c
A         hello.c
$ svn ci

커밋에는 로그 메시지

경고!

로그 메시지

안녕 세상!
--이 줄 이하는 자동으로 제거됩니다--

A    hello.c
추가          hello.c
파일 데이터 전송중.
커밋된 리비전 1.

로그 보기

$ svn up
리비전 1.
$ svn log
------------------------------------------------------------------------
r1 | tinuviel | 0000-00-00 00:00:00 +0000 (수, 11  6월 2008) | 2 lines

안녕 세상!

------------------------------------------------------------------------

안녕 세상?

안녕 Subversion!

$ vi hello.c
#include <stdio.h>
int main() {
    printf("Hello, Subversion!\n");
    return 0;
}

커밋 전엔 리뷰

$ svn st
?      hello
M      hello.c

차이점 보기

$ svn diff
Index: hello.c
===================================================================
--- hello.c     (revision 1)
+++ hello.c     (working copy)
@@ -1,5 +1,5 @@
 #include <stdio.h>
 int main() {
-    printf("Hello, world!\n");
+    printf("Hello, Subversion!\n");
     return 0;
 }

커밋 전엔 테스트

$ make hello
cc     hello.c   -o hello
$ ./hello
Hello, Subversion!

커밋!

$ svn ci -m '세상이 아니라 Subversion이에요 Subversion씨 죄송!'
전송중         hello.c
파일 데이터 전송중.
커밋된 리비전 2.

혼자 놀기

같이 놀기