SVN 사용자 명령(cont.)

Download Report

Transcript SVN 사용자 명령(cont.)

Subversion in Linux
홍일선
2010. 8. 2
1
Subversion?!
Ilsun Hong, M.S Student
• 소프트웨어 버전 관리 툴
• 필요성
–
–
–
–
개발 버전과 릴리즈 버전이 섞이지 않고 쉽게 관리 할 수 있음
소스를 잘못 수정했을 때 되돌리기가 쉬움
수정, 추가, 삭제 등의 기록이 남아 변경사항을 추적하기 쉬움
따로 백업을 하지 않아도 됨
2
Vocabulary
Ilsun Hong, M.S Student
• 저장소(Repository)
– 모든 프로젝트 소스들이 보관되는 곳
– 소스의 변경사항까지도 저장됨
• 체크아웃(Check out)
– 저장소에서 소스를 받아오는 것
• 커밋(Commit)
– 체크아웃 한 소스를 수정, 파일 추가, 삭제 등을 한 뒤 저장소에 갱신 하는 것
– CVS와 달리 SVN은 전체 리비전이 1 증가함
• 리비전(Revision)
– 프로젝트의 소스의 버전을 의미
– 소스 파일 등을 수정하여 커밋하게 되면 숫자가 증가함
3
Vocabulary(cont.)
Ilsun Hong, M.S Student
• 임포트(Import)
– 아무것도 들어있지 않은 저장소에 맨 처음 소스를 넣는 작업
– Add를 통하여도 가능하기 때문에 잘 쓰이지는 않음
• 익스포트(Export)
– 체크아웃과 달리 버전 관리 파일들을 뺀 순수한 소스 파일만을 받음
– 소스를 압축하여 릴리즈 할 때 사용
4
Directory of Repository
Ilsun Hong, M.S Student
• Trunk
– 프로젝트에서 중심이 되는 디렉토리
– 모든 개발 작업은 여기에서
• Branches
– 따로 개발할 프로젝트의 프로젝트
– 이 안에서만 개발
• Tags
– 정기적으로 릴리즈 할 때 사용
– 발표한 소스를 따로 저장하는 공간
5
SVN 관리자 명령
Ilsun Hong, M.S Student
• svnadmin
– svn 관리자를 위한 명령어
– 저장소를 만들고 계정을 관리하는 등의 일에 쓰인다
• 저장소 만들기
– svnadmin create --fs-type fsfs sample
• sample이라는 프로젝트(디렉토리)를 만든다.
• svn 관리를 위한 여러파일들이 디렉토리에 생성된다.
• --fs-type 옵션은 저장소 관리 DB의 종류를 결정한다.
– fsfs : 파일 시스템으로 관리
– bdb : Berkeley DB 형식으로 관리
6
SVN 사용자 설정
Ilsun Hong, M.S Student
• 리눅스 환경에서 svn의 로그 기록을 위한 디폴트 에디터를 설정
– 환경 변수를 설정
• .profile이나 .bash_profile 등의 환경 변수 지정 파일을 수정
• vim 에디터를 이용할 시
– SVN_EDITOR=/usr/bin/vim
– export SVN_EDITOR
7
SVN 사용자 명령
Ilsun Hong, M.S Student
• 저장소 확인 하기
– 저장소의 디렉토리나 파일을 확인
– svn list http://(서브버전 도메인)/svn/sample/trunk
• 저장소에 디렉토리 추가하기
– 저장소에 디렉토리를 새로 만든다
– svn mkdir http://(서브버전 도메인)/svn/sample/trunk
• sample프로젝트에 trunk 디렉토리를 만든다
• 저장소에 Import 하기
– import는 디렉토리 단위로 가능
– svn import sampledir http://(서브버전 도메인)/svn/sample/trunk
• sampledir 안에 있는 파일을 trunk에 복사
• sampledir은 올라가지 않음
8
SVN 사용자 명령(cont.)
Ilsun Hong, M.S Student
• 체크아웃하기
– svn checkout http://(서브버전 도메인)/svn/sample/trunk sample
• checkout은 co로 줄일 수 있음
• sample 디렉토리에 trunk안의 내용(하위폴더 포함) 소스파일 다운받음
• .svn이라는 숨겨진 디렉토리는 지우면 안됨
• 업데이트하기
– 체크아웃해서 받은 소스를 저장소의 최근 내용으로 업데이트 하는 명령
– svn update
• .svn이 있는 경우에 자동으로 최근 소스로 업데이트하여 다운받음
• 커밋하기
– svn commit
• commit는 ci로 줄일 수 있음
• 수정한 소스를 저장소에 올림
9
SVN 사용자 명령(cont.)
Ilsun Hong, M.S Student
• 로그 확인하기
– svn log
• 각 리비전의 로그를 확인한다
– svn log --revision 5:19
• 리비전 5부터 18까지의 로그를 출력
– svn log -r 19:5
• 리비전 19부터 5까지 역으로 출력
– svn log -r 8
• 리비전 8의 로그를 출력
– svn log filename
• 개별 파일의 리비전을 출력
– svn log -r 5 -v
• v 옵션은 좀 더 자세한 정보 출력
10
SVN 사용자 명령(cont.)
Ilsun Hong, M.S Student
• 소스 비교하기
– svn diff -r 4 filename
• 예전 소스와 지금 소스 파일을 비교한다
– svn diff -r 5:6 filename
• 리비전 5와 6의 파일을 비교
11
SVN 사용자 명령(cont.)
Ilsun Hong, M.S Student
• 수정한 사람 찾아내기
– svn blame filename
• 수정한 사람을 찾아내기
– svn blame -r 4 filename
• 특정 리비전을 대상으로 찾아내기
12
SVN 사용자 명령(cont.)
Ilsun Hong, M.S Student
• 파일 잠그기/풀기
– 파일을 다른 사람이 수정하지 못하도록 잠금
– 파일을 잠글 때 잠근 이유를 로그로 기록할 수 있음
– svn lock filename
• 파일을 잠금
– svn unlock filename
• 파일 잠금 해제
• 파일 추가
– 새 파일을 추가
– svn add filename
• 파일을 svn 관리에 추가함
• 커밋을 해야만 저장소에 추가됨
13
SVN 사용자 명령(cont.)
Ilsun Hong, M.S Student
• 파일이나 디렉토리 이름 바꾸기
– svn rename oldfilename newfilename
• 커밋을 해야 완전히 바뀜
• 배포하기
– 릴리즈 버전을 배포한다
– svn export http://(서브버전 도메인)/svn/sample/trunk newdir
• 서브버전 관리 .svn 디렉토리를 제외하고 가져온다
14
SVN 사용자 명령(cont.)
Ilsun Hong, M.S Student
• branch, tag, copy
– 필요한 경우 찾아 보시길~
– 대부분의 사람들은 필요 없음
– 프로젝트 관리자가 주로 사용
• http://www.pyrasis.com/main/Subversion-HOWTO
15
마무리
Ilsun Hong, M.S Student
• 버전 관리는 필요하다
• 소스코드의 백업은 필수적이다
• 혼자 프로젝트를 진행할 경우에도 소스코드 관리는 필요하다
• 윈도우 환경에서는 GUI 툴을 이용할 수 있지만, 리눅스 환경에서 개발할
경우에는 svn 사용법을 익혀야 한다
16