그 결과, 다음과 같이 SVN시스템을 구성하기로 했다.
서버측: VisualSVN 서버
클라이언트측: tortoiseSVN
( VisualSVN 은 클라이언트 프로그램도 있는데, 비주얼 스튜디오에 애드온되는 형태이다. 유료이므로 고려하지 않았다. )
이렇게 구성한 이유를 말해보자면,
VisualSVN 서버는 무료이다.
게다가 설치하여 보니,
우선 UI가 IIS 관리툴과 대동소이하여 친숙하고
저장소관리, 유저관리, 계정별 저장소 접근권한 관리가 GUI상에서 바로 할 수 있어 아주 편리하다.
( 윈도우즈환경에서는 ) svn콘솔형태의 서버나 svn manager 와 비교해볼 때 그 편리성이 탁월하므로 VisualSVN서버를 사용하기로 결정하였다.
tortoiseSVN은 워낙 유명하니 설명은 생략.
검색하다보니,
CVS와 유사하므로 CVS사용자는 SVN을 금방 익힐 거라는 얘기가 인터넷에 많든데... 실제로 테스트해본 결과 절대 그렇지 않다.
CVS를 쓰던 지식 때문에 어리둥절 더욱더 헷갈렸다.
가장 헷갈렸던 부분은 저장소를 다루는 부분이었다.
CVS의 경우엔 하나의 저장소를 만들어 놓고 프로젝트 폴더를 이것저것 집어넣는 식으로 관리했었는데, 이놈의 SVN은 그것이 아니라 프로젝트 하나마다 저장소 하나를 대응시키는 방식이다.
이것때문에 얼마나 삽질을 했었는지 OTL
CVS 와 SVN은 관리방식의 개념이 완전히 다르다.
헷갈리지 않게 SVN의 저장소 만들기 의 단계를 나름대로 정리해본다.
1. VisualSVN으로 서버측에 저장소를 하나 생성한다.
예를 들면 'Test_0' 이란 저장소를 하나 만든다.
2. 저장소에 import할 솔루션( 또는 워크스페이스 등의 개념 )을 만들고 원본형태로 백업을 해둔다.
예를 들면 'Test_0' 이란 이름으로 솔루션을 하나 만들고 백업시켜둔다.
3. 버전관리대상에 포함시킬 파일들만 남겨둔다.
그리고 솔루션 폴더를 준비된 저장소로 import를 시킨다.
예를 들면 Test_0 솔루션 폴더를 Test_0 저장소로 import하는 것이다.
import는 탐색기에서 Test_0 솔루션폴더에 오른쪽 버튼을 누르고 띄운 메뉴에서 고를 수 있다.
4. 3번 과정을 수행했다면 저장소에는 솔루션폴더의 하위내용들이 담겨져있을 것이다.
예를 들면 Test_0 저장소에는 Test_0 솔루션 폴더에 하위에 있던 내용들이 담겨져 있을 것이다. 확인해보자.
( 이 부분이 CVS와 다르다. CVS는 해당폴더를 몽땅 저장소에 밀어넣는 식이었지만 SVN에서는 해당폴더를 import하면 하위내용들이 저장소에 담겨진다 )
5. 이제 필요한 곳에서 해당 저장소를 체크아웃하여 작업을 하면 된다.
( 단 역시나 예를 들자면 Test_0 이란 폴더를 만들고 그 폴더를 오른쪽버튼으로 클릭하여 체크아웃한다. 그러면 저장소에 있는 내용들이 해당 폴더 밑으로 들어오게 될 것이다 )
# CVS 사용할 때처럼 폴더를 전체 밀어넣게 된다면 당황하게 될 것이다.왜냐하면 SVN은 저장소 단위로 커밋이 이루어지기 때문이다.
SVN은 또 한가지 CVS와의 개념차이가 있다.( 물론 내 생각이다 )
SVN에서는 다음 세가지의 관용적인 저장소 폴더 나눔을 추천하고 있는데 각각의 의미는 다음과 같다.
1. trunk: 원본줄기 를 위한 영역이다
2. branch: 시연용버전 등을 위한 영역이다
3. tags: 릴리즈 버전을 위한 영역이다
CVS를 사용하면서 느낀 난감한 점 한가지는 브랜치와 태그라는 개념이 실제로 사용하기에 난잡했다는 것이다.
태깅하고 다시 머지하고 하는게 좀 난잡해서 별로 사용하지 않게 되는 것이다.
SVN을 살펴보면서 위의 세 저장소 폴더의 개념을 읽어보았는데 CVS보다 훨씬 깔끔하게 브랜치들의 관리가 될 것이라는 생각이 들었다.
그래서 나름의 각 저장소 폴더 사용에 대해 시나리오를 만들어보았다.
내 시나리오일 뿐이므로 추천하지는 않는다.
이 방법은 브랜치라는 것을 완전히 새로운 줄기로 다룬다.
# 고객시연용 버전이 필요하다.
1) trunk로부터 export해온다.
2) 처음 하는 것이라면 branch에 import한다. 두번째부터는 import가 아니라 commit한다.
3) branch에 import( commit )한 것을 체크아웃하여 고객시연용 버전을 작업한다.
# 1.0버전을 릴리즈할 때가 되었다.
1) trunk로부터 export해온다.
2) 처음 하는 것이라면 tags에 import한다. 두번째부터는 import가 아니라 commit한다.
3) tags에 import( commit )한 것을 체크아웃하여 릴리즈 1.0버전을 작업한다.
이렇게 하면 branch, tags에는 각각 고객시연용버전, 릴리즈 버전이 차곡차곡 쌓이게 될 것이다. 물론 그냥 미리 시나리오만 짜본거라 이러한 생각들이 틀릴지도 모른다
[출처] 나만의 SVN 시스템 구성하기|작성자 풍류협객




이올린에 북마크하기
