subversion 사용시 알아둘점

다음은 제가 회사에서 cvs 저장소를 subversion로 전환하면서 쓴 글입니다. 쪽팔려서 올릴생각도 안했지만, 혹시라도 필요한 분이 있을까 해서 올려봅니다.

subversion을 사용하시면서 cvs사용시와 몇가지 달라진점이 있습니다.

* 한글 로그를 사용시, 몇몇에서는 UTF-8로 로그를 남기고, 윈도우즈나 기타
환경에서 CP949(euc-kr)로 로그를 남겨서 코드가 안 맞는 문제가 있었는데,
이것을 변환할 수 있습니다. 윈도우즈에서는 자동으로 CP949를 인식하고 로그
를 변환해줍니다. 따라서 커밋시에 편하게 한글로 로그를 남겨도 별 문제가
없습니다. 단, 소스코드 레벨에서는 특별히 변환이 일어나지 않으므로 기존과
마찬가지로 되도록이면 영어로 쓰거나, 최소한 프로젝트별로 통일하도록 해야
합니다.

* 디렉토리 생성, 삭제가 파일수정과 마찬가지의 작업단위로 취급됩니다.
cvs에서 디렉토리를 만들거나 지울 경우, 커밋과는 별도로 리포지터리에 수정
이 가해졌고, 여러개의 디렉토리를 가진 소스를 기존 트리에 추가할 경우
import를 해서 링크를 하는 방법을 썼지만, subversion에서는 디렉토리를 복
사하고 svn add하는 것으로 충분합니다.

* 모든 commit은 atomic입니다. 즉, 파일단위로 커밋이 이루어지는 것이 아
니라 여러개의 변화가 하나의 변화집합(change-set)으로 묶입니다. 이것은
trac 웹페이지에서 timeline으로 확인할 수 있으며, 작업을 취소하거나 하나
씩 단계별로 테스트를 하는데 유리합니다. cvs에서는 이것을 각각의 release
태그를 이용하지 않으면 힘들었습니다.
그리고 이것은 바꿔 말하면, 커밋을 할 때 작업단위로 해야 유용한 정보로
남는 다는 것을 뜻합니다. 디버깅 코드를 추가한다거나, 공백문자만 변화된
커밋이라거나, 디렉토리가 나눠져 있다고 연관된 작업을 따로따로 커밋하는
것은 커밋 히스토리를 보기 어렵게합니다.

* 커밋 로그는 되도록이면 자세하게 남겨주세요. 장황하다고 생각 될 정도도
괜찮습니다. 이때 자세하다는 의미는, 소스에서 인자를 추가했다거나 등등
low-level한 것이 아니라, 어떠한 이유로 어떠한 것을 어떻게 수정했고, 결과
는 어떻고 등에 대한 것입니다. 이것들은 나중에 소스를 보면서, '내가 이것
을 왜 수정했을까.. 에 대한 의문을 해결하는데 도움을 줍니다.


* windows와 Linux등 eol-style이 다른 경우에 같이 작업을 하다 보면
EOL-style이 안 맞는 경우가 있습니다. 이런 경우를 위해서, 소스 파일들의
속성에 svn:eol-style을 설정해 주세요. subversion이 자동으로 변환을 해줍
니다.
http://svnbook.red-bean.com/en/1.1/svn-book.html#svn-ch-7-sect-2.3.5
참고하세요.

* cvs와는 달리 subversion에는 브랜치, 태그 라는 명령이 따로 없습니다.
대신 branches 디렉토리나 tags디렉토리를 만들고, 그곳에 특정 리비전을 복
사하는 것으로 대신합니다. 이부분에 대해서는 아직 저도 많이 사용해본적이
없어서 좀 더 연습이 필요합니다.

* trac 페이지를 이용하면 버그 트래킹, 마일스톤 설정등을 할 수 있습니다.
티켓이 버그트래킹, 기타 이슈에 대한 관리 시스템인데, 버그질라에 비해 간
단한 인터페이스로 좀더 쉽게 사용할 수 있습니다. 그 밖에 마일스톤을 이용
하면 특정 릴리즈 시점등을 표시하거나, 일정계획등을 표시할 수 있고,
ticket과 연동해서 완성도 보기등을 사용할 수 있어서 꽤 뽀대가 납니다. :)

* cvs에서 repositary에서 직접 했던 것들 (링크걸기라던가, 디렉토리 지우
기등 파일시스템을 직접 건드리는 행동)을 하기가 어렵습니다.

* 버그, 혹은 알 수 없는 문제로 checkout할때 암호를 2~3번 물어보는 경우
가 있습니다. 암호가 틀린것이 아니므로 당황하실 필요는 없습니다.

글이 장황해 졌는데, 사실 기본적인 사용은 cvs와 별반 다르지 않습니다.
체크아웃 - 수정 - 커밋의 기본틀은 그대로 유지됩니다. 즐거운 개발을 합시
다. :-)


November 23, 2005 12:30 PM

3 Comments
deepblue said @ November 24, 2005 11:26 AM
저희팀에도 도움 되는 말이 있어서 인용해서 살짝 전달했습니다. ^^
깜장여우 said @ December 14, 2005 03:13 PM
넘 좋은 글이네요.. 감사합니다.. 제 페이지에 링크 걸어도 될런지요?
mithrandir said @ December 18, 2005 09:35 PM
물론 괜찮습니다. :)