서브버전 #
서브버전(Subversion)은 CVS의 단점을 보완한 버전 관리(version control) 시스템입니다. 저희 팀은 서버 내 저장소의 루트 위치를 /var/svn/ 으로 하였습니다.
svn+ssh #
저장소 만들기 #
- sudo svnadmin create /path/to/repositary로 저장소 생성
- sudo chgrp -R group_name /path/to/repositary로 그룹 권한 설정
- sudo chmod -R 770 /path/to/repositary로 접근 권한 설정
- sudo chmod -R g+s /path/to/repositary/db 로 스틱키 비트 설정 (스틱키 비트가 설정되야 하는 이유는, db 폴더에 작업되는 파일의 소유 그룹이 작업한 사용자에 관계없이 group_name으로 설정되도록 하기 위해서이고, 이 때 재귀적으로 설정하는 이유는 서브 디렉터리에도 같은 설정이 적용되어야 하기 때문.)
체크아웃 #
- 허용된 사용자로 체크아웃 해야 함.
- svn checkout svn+ssh://user_name@address/path/to/repositary/ : 사용자 이름을 user_name으로 하여 체크아웃 시도.
가지를 줄기에 병합하기 #
저장소 관리 #
방법은 아래와 같으며, 자세한 설명이 필요한 경우에는 서브버전을 이용한 실용적인 버전 관리 p175를 참고하세요.
- 백업 - sudo svnadmin dump /path/to/repositary/ > dump_file_name
- 복원 -
sudo svnadmin create /path/to/new_repositary/ sudo svnadmin load /path/to/new_repositary/ < dump_file_name
이용 규칙 #
- 파일 이름 변경 및 이동하는 경우 변경 전에 반드시 커밋한 후 변경 후에 새로 커밋을 한다. (이는 파일 내용 변경과 구분하기 위함입니다)
이름 규칙 #
- 저장소, 디렉토리, 파일 이름의 시작은 대문자로 합니다.
- 이름이 2개 이상의 단어로 구성되는 경우 단어의 시작은 대문자로 합니다.
- 축약어인 경우 첫글자만 대문자로 합니다.
- trunk, branches(가지), tags(꼬리표), vendor, src, doc, lib
- 릴리스 가지(RB-), 릴리즈(REL-), 버그 교정 가지(BUG-), 버그 교정 이전(PRE-), 버그 교정 이후(POST-), 개발자 실험(TRY-)
- 릴리스 폴더는 릴리스 번호를 그래도 붙여줍니다. (예, REL-1.0.1a)
저장소 구조 #
일반 프로젝트 #
Easikin
└ trunk
└ src
└ vendor
무시 목록 #
서브버전의 저장소에 프로젝트의 모든 파일 저장할 필요는 없습니다. 예를 들어, 실행 파일은 소스 파일에 의해 만들어진(build) 파일입니다. 소스 파일만 있으면 언제든지 다시 만들 수 있습니다. 오히려 소스 파일과 중복되기 때문에 저장소가 비대해져 관리가 비효율적입니다. 이와 같이 로컬 디렉토리에는 존재하지만, 서브버전의 저장소에 제외된 목록을 무시 목록(ignore list)라고 합니다. 무시 목록으로 등록된 파일과 디렉토리는 저장소로 커밋되지 않습니다.
해당 파일 또는 디렉토리를 무시 목록에 추가하려면 다음과 같이 진행합니다. (톨토이스를 기준으로 설명합니다.)
- 윈도우 탐색기에서 대상 파일 또는 디렉토리를 우클릭 한 후, TortoiseSVN > 무시 목록에 추가를 선택합니다.
- 해당 파일만 추가할 것인지 또는 해당 파일과 동일한 확장자를 가진 모든 파일을 추가할지 선택합니다.
유용한 서브버전 툴 #
비주얼 C++ 2005 솔루션과 서브버전 #
비주얼 C++ 2005 솔루션을 서브버전에 저장할 때 관리의 효율을 위해서 아래의 파일을 무시 목록에 추가합니다.
- 솔루션 폴더 내의 debug, release 폴더
- 솔루션 폴더 내의 *.ncb 파일
- 솔루션 폴더 내의 *.suo 파일
- 각 프로젝트 폴더 내의 Debug, Release 폴더
- 각 프로젝트 폴더 내의 *.user 파일








![[http]](/imgs/http.png)