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