Subversion Summary
by admin on Oct.07, 2008, under N/A
개인적으로 프로젝트 개발에 Subversion 을 도입한지 한 1년이 조금 넘은것 같다. 하지만 할때마다 삽질을 하는터라, 이곳에 정리를 하기로 했다.
참고 사이트 : http://www.pyrasis.com/main/Subversion-HOWTO
http://dreamstorm.cafe24.com/cgi-bin/moin.cgi/Subversion
1. 기본 디렉토리 만들기
# svn mkdir svn://<SERVER-IP>/<REPOSITORY>/trunk
# svn mkdir svn://<SERVER-IP>/<REPOSITORY>/branches
# svn mkdir svn://<SERVER-IP>/<REPOSITORY>/tags
2. 저장소 import
처음에 소스코드를 업로드 하는 과정
# pwd
/home/alex/project/myproject1
# ls
main.c func1.c func2.c
# cd /home/alex/project
# svn import myproject1 svn://<SERVER-IP>/<REPOSITORY>/trunk
이러면 main.c, func1.c, func2.c 만 올라간다.
3. Checkout (체크아웃)
# pwd
/home/alex/project
# mkdir myproject1new
# svn checkout svn://<SERVER-IP>/<REPOSITORY>/trunk myproject1new
4. 유용한 기능들
파일 이름 변경하기
sample# svn rename hello.c world.c
sample# svn commit
버전관리 안되는 릴리즈 코드 얻기
sample# svn export http://(SERVER_IP)/svn/sample2/trunk sample
5. 분기 Branch
특징 : Repository 전체를 받음. (Trunk 만 아님, 다받음)
svn checkout http://(SERVER_IP)/svn/sample sample
sample# svn copy trunk branches/sample-branch
sample# svn commit
Branch된 소스를 받기 위해서는 branches/sample-branch를 체크아웃 하면 됩니다. trunk와 branche는 따로 revision을 가지지 않습니다. Subversion의 revision은 저장소 전체의 revision입니다.
# svn checkout \ http://(SERVER_IP)/svn/sample/branches/sample-branch \ sample-branch
6. 병합 Merge
7. 태그 Tag
Tag는 만든 프로그램을 웹 사이트 등에 공개할 때 사용합니다. Tag도 Subversion에서는 Branch와 마찬가지로 디렉토리 복사(copy)와 같습니다. tags 디렉토리 안에는 일반적으로 릴리즈(발표)하는 버전별 디렉토리를 만들어 사용합니다.
0.1 버전을 발표할 때 0.1 버전의 순간을 tags 디렉토리에 복사하는 것입니다. 0.2가 되었을 때 tags아래 0.2 디렉토리로 복사합니다. 이렇게 되면 각각의 버전별로 소스를 관리 할 수 있습니다. 저장소에서는 실제로 복사가 되는 것은 아니고 변경된 점만 복사하기 때문에 저장소의 용량이 소스코드의 크기만큼 배로 늘어나지는 않습니다.
trunk의 소스를 0.1 버전으로 Tag, Branch와 마찬가지로 체크아웃 받은 소스에서도 할 수 있고 원격에서 URL로도 할 수 있습니다. 아래 체크아웃 받은 것은 trunk만 받은 것이 아니고 sample 디렉토리 아래를 전부 받는 것입니다.
# svn checkout http://(SERVER_IP)/svn/sample sample sample# svn copy trunk tags/0.1 sample# svn commit
원격에서 URL로 복사합니다. 이 경우 commit도 같이 이루어집니다. 체크아웃 받은 소스는 update를 해주어야 합니다.
# svn copy http://(SERVER_IP)/svn/sample/trunk \ http://(SERVER_IP)/svn/sample/tags/0.1
이제 0.1로 Tag한 소스를 Export로 받아서 압축한 뒤에 릴리즈(공개)를 하면 됩니다.
# svn export http://(SERVER_IP)/svn/sample/tags/0.1 sample-0.1
8. MSVC 환경에서 Ignore 설정하기
MSVC 에서 개발하면 쓸데없는 바이너리가 너무 많이 생성된다. 따라서 다음과같은 방법으로 Ignore 하자!
# svn propset svn:ignore *.suo . (파일 ignore)
# svn propset svn:ignore bin . (디렉토리 ignore 하기)
Debug Release *.ncb *.plg *.opt *.suo *.user
정도 없애면 될듯.
Leave a Reply
You must be logged in to post a comment.