Subversion 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제
1. 도구개요 1.1 도구정보요약 도구명 Subversion (http://subversion.apache.org/) 라이선스 Apache License v2.0 소개 특징 주요기능 CVS의단점을보완하여작성된중앙집중형방식의형상관리도구 파일이나디렉터리를이동해도이력보존 gzip 압축을통한저장공간절약 CVS에비해빠른속도 다양한써드파티 GUI 도구존재 checkout/checkin, update/commit 등서버저장소와클라이언트의변경사항전송 diff를통한파일내용비교 바이너리문서형상관리 작업단위의변경사항관리 atomic commit svn:ignore를통한형상관리배제자원지정기능 실행환경 Windows, Linux, MacOS 사전설치도구 없음 카테고리 형상관리최신버전 v1.8.10 (2014.12) 관련도구 CVS, Git, Mercurial, Subclipse 2
1. 도구개요 1.2 스크린캡쳐및주요기능 checkout/checkin, update/commit 등서버저장소와클라이언트의변경사항전송 파일단위가아닌여러파일을포함하는작업단위의변경사항관리 텍스트뿐아니라바이너리파일도형상관리 atomic commit 으로커밋도중오류발생시롤백 컴파일된오브젝트파일이나클래스파일, 로그파일등프로젝트디렉터리내에존재하지만형상관리할필요가없는자원은 svn:ignore 로형상관리에서배제가능 SVN 은 CLI(Command Line Interface) 기반도구로스크린캡쳐할도구화면은없음 SVN Repository checkout, update checkin, commit add, delete, move, lock, merge, import, export, status, log, 3
2. 설치및실행 세부목차 2.1 Subversion 다운받기 2.2 Subversion 설치하기 2.3 Subversion 설치및확인하기 4
2. 설치및실행 2.1 Subversion 다운받기 http://subversion.apache.org/packages.html 에서 Ubuntu Linux 클릭 대부분의개발환경에서 Subversion 을 Linux 에사용하므로, 본매뉴얼은 Ubuntu 환경에서기술 5
2. 설치및실행 2.1 Subversion 다운받기 Ubuntu Package 미러사이트선택 6
2. 설치및실행 2.2 Subversion 설치하기 Root 권한으로이동 apt-get install subversion Root 권한에서설치가가능하며, apt 명령을실행하여설치를진행 7
2. 설치및실행 2.2 Subversion 설치하기 설치완료후설치확인 : svnadmin help 아래와같은리스트가나온다면설치가완료된것 8
2. 설치및실행 2.3 저장소생성 초기설정 : 저장소생성 Svn 을구동하는계정을포함한 Main folder 를생성 Folder 생성후 svnadmin 도구를생성 9
2. 설치및실행 2.4 접속권한및계정설정 chmod 명령어를사용하여쓰기권한을추가 생성된파일을확인후 svnserv.conf 파일을수정 10
2. 설치및실행 2.4 접속권한및계정설정 익명및인증사용자에대한권한설정 익명설정 (anon-access) 값에는읽기, 인증된사용자는쓰기까지설정, 계정정보는 passwd 설정예시 11
2. 설치및실행 2.4 접속권한및계정설정 passwd 파일설정 "passwd file 을 editor 로열고접속을위한 ID, Password 를입력 12
2. 설치및실행 2.5 접속테스트 Svn Server 를실행후테스트 "svnserve -d -r /home/hacs/svn 입력 Editor 화면 "Ctrl-X 로나오기 "C 13
2. 설치및실행 2.5 접속테스트 Folder 생성테스트 계정및비밀번호입력 (passwd 파일작성에사용한계정및비밀번호 ) 14
3. 주요기능 개요및세부목차 3.1 svnserve 명령어 3.2 svnadmin 명령어 3.3 svn 명령어 15
3. 주요기능 3.1 svnserve 명령어 Svnserve : svn 의서버 Daemon 본서버가실행되고있어야 svn client 도구들이접속가능 --daemon ( 또는 -d) : svnserve 도구를 daemon 형태로구동 --help (-h) : 사용량및도움말을표시한다. --listen-port=port : TCP/IP 접속시의 port 번호를설정 --root=root (-r=root) : repository 가있을 Main folder 경로 사용예 /home/hacs/svn 폴더에 svn 서버를구동하고자하는경우, Folder 지정을위한 -r option 과 daemon 구동을위한 -d option 을모두설정하고실행 16
3. 주요기능 3.2 svnadmin 명령어 Svn의전반적인관리를위한도구 : svnadmin Svn서비스구동전, repository 생성, lock 제거, 전체정보출력등 svnadmin create : repository를생성 #svnadmin create /var/svn/repos --fs-type fsfs svnadmin recover : repository 를제일안정적인 version 의상태로복구 #svnadmin recover /var/svn/repos/ repository lock acquired. Please wait; recovering the repository may take some time... Recovery completed. The latest repos revision is 34. 17
3. 주요기능 3.3 svn 명령어 Svn 의명령어 svn add : 지정된 folder 아래에 file 또는 folder 를추가 #svn add foo.c A foo.c svnadmin verify : repository 를점검하고최종 version 을알림 svn update : 지정된 folder 아래의모든 file 들을최신 version 으로 update #svn update A newdir/toggle.c A newdir/disclose.c A newdir/launch.c D newdir/readme updated to revision 32. 18
3. 주요기능 3.3 svn 명령어 svn import : 현재 Prompt 가있는 folder 아래에 file 또는 folder 들을모두서버로 upload/commit #svn import -m "New import" myproj http://localhost/sample/trunk myproj/sample.txt Transmitting file data... Committed revision 16. svn blame : 해당 URL 의 file 에대한작성자정보등의내용들을출력 Adding svn checkout : 해당 svn 에있는 repository 에서 file 들을모두최신 version 으로 update #svn checkout file:///var/svn/repos/test mine A mine/a A mine/b A mine/c A mine/d Checked out revision 20. 19
3. 주요기능 3.3 svn 명령어 svn cleanup : local 에있는모든 file 및 folder 들을새로정리 ( 별도의응답없음 ) #svn cleanup svn commit : 수정또는신규로올린 file이나 folder가확정 version임을 Server에통보 # svn commit --force-log --file file_under_vc.txt foo.c Sending foo.c Transmitting file data. Committed revision 6. svn copy : local 에있는 file 및 folder 들을서버의 repository 에복사 (upload) # svn cp bat.c baz.c qux.c src A src/bat.c A src/baz.c A src/qux.c svn move : 파일이나디렉토리를다른위치로이동하거나이름변경 20
3. 주요기능 3.3 svn 명령어 svn lock : repository 에있는 folder 나 file 에대하여다른사용자가 update 하지못하도록막음 #svn lock tree.jpg house.jpg 'tree.jpg' locked by user 'harry'. 'house.jpg' locked by user 'harry'. svn diff : repository 에있는두 file 에대하여비교하여상호틀린부분을출력 #svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk/committers Index: COMMITTERS =================================================================== ---COMMITTERS (revision 3000) +++ COMMITTERS (revision 3500) svn mkdir : repository 에새로운 folder 를생성 # svn mkdir newdir A newdir 21
3. 주요기능 3.3 svn 명령어 svn status : 작업사본의파일이나디렉터리상태표시 svn info : 작업사본이나저장소의파일, 디렉토리의정보출력 22
3. 주요기능 3.4 version 1.8 기준폐지내용 neon 기반의 HTTP 클라이언트지원폐지 대신 serf 기반의 HTTP 클라이언트지원 Berkeley DB 저장소지원중지 1.8 이후로 FSFS 저장소에대해서만기능추가및업데이트진행 기능추가및업데이트가없을뿐 Berkeley DB 로운영중인저장소를 FSFS 로반드시전환할필요는없음 23
4. 활용예제 세부목차 4.1 Subversion 폴더생성 4.2 Subversion 업로드 4.3 Subversion 확인 4.4 Check Out 4.5 Subversion Reversion 4.6 Subversion lock 24
4. 활용예제 4.1 Subversion 폴더생성 여러명이동시에하나의과제내에서개발하는예제 Sourcefile 들을 upload 하고 lock 을걸어 file 이다른사람으로부터쓰여지는것을막는처리 설치과정에서생성된 "sample" repository 를이용, trunk 라는 root folder 를만들어접속 Folder 및 file 들을관리 svn mkdir 을이용하여 "cpp_trunk" 라는 folder 를생성 25
4. 활용예제 4.2 Subversion 업로드 Sample folder 아래 "cpp_trunk" 라는 folder 를생성 해당 folder 로들어가서 editor 를이용, C sourcefile 을작성 작성된 file 을 import 명령을이용, svn server 에 upload 26
4. 활용예제 4.3 Subversion 확인 List 명령어로확인 Upload 한 file 이해당 folder(cpp_trunk) 에정상적으로처리되었는지확인이가능 Local 에서 file 이삭제가되었거나다른 PC 에서 svn 에있는 file 및 folder 들을내려받는것으로가정 Local 에만들었던 cpp_trunk folder 전체를아래그림과같이삭제 27
4. 활용예제 4.4 Check Out Checkout 명령어로앞서생성하고 file 을 upload 하였던 cpp_trunk folder 전체를받음 Local 에삭제하였던 folder 가자동으로생성되어있는것을확인 28
4. 활용예제 4.4 Check Out 해당 folder 에올려두었던 "printf_func.c" sourcefile 도정상적으로받아짐 update 명령어로다른사용자가 file 을수정하거나또다른 folder 나 file 업로드여부사항확인가능 29
4. 활용예제 4.5 Subversion Reversion File 내용을수정하고, 수정된 file 을 svn 에 upload 및 commit 처리 Editor 에서주석한줄을추가 30
4. 활용예제 4.5 Subversion Reversion Commit 명령어를이용하면수정된 file 은자동으로 upload 되고 commit 처리상태가됨 "Ctrl-X 키로나올수있음 31
4. 활용예제 4.5 Subversion Reversion Reversion 상태확인 Commit 처리가되면아래그림과같이수정된 file 명이보이고 Reversion 32
4. 활용예제 4.5 Subversion Reversion Log 명령어 : 변경된이력을조회 Version4 에서 5 로변경된내역및어느계정이변경처리했는지알수있음 33
4. 활용예제 4.5 Subversion Reversion 해당 version 에서내부변경사항확인 Diff 명령어를이용하여 source 에서어떤부분이변경되었는지확인 34
4. 활용예제 4.6 Subversion lock Lock : 다른이용자의접근불허 해당 file 을수정중이라면사전에미리 lock 을걸어서 file 을 update 할수없도록막음 Lock 명령어로 printf_func.c file 에대하여 lock 을걸었을경우 35