사용자 도구


SVN

SVN는 Subversion이라고도 하며 소프트웨어 버전 관리 프로그램이다. SVN은 클라이언트 – 서버 시스템으로 이루어져 있다. 서버에는 repository라 불리는 장소에 문서나 소프트웨어의 코드들을 버전별(revision)로 가지고 있다. 클라이언트에서 문서를 수정한 후 서버에 올리는 작업(commit)을 거칠 때마다 새로운 revision이 생기며 이것이 최신 문서가 된다. 물론 서버에 올라와 있는 최신 문서를 가져오는 작업(update)과 특정 revision으로 되돌아가는 작업(revert)도 가능하다.

버전 관리 프로그램의 장점은 다수의 인원이 같은 프로젝트를 진행할 때 드러난다. 서버에 연결하여 다른 팀원이 수정하거나 추가한 최신 문서를 받기가 쉽고 이전 revision과 비교하여 어느 부분이 수정되었는지 찾는 작업도 용이하다. 서버에 branch라는 공간을 각 개인별로 추가하여 프로젝트 전체에 주는 영향을 최소화 하면서 새로운 부분을 개발할 수도 있으며 이를 검증하여 trunk라는 메인 공간에 합치는 작업도 쉽게 할 수 있다. 소프트웨어 개발 시에는 수정된 부분을 추적하여 코드의 의미를 파악하거나 문제점을 찾고 이전 코드로 복구하는 작업도 가능하다. 이슈 추적 시스템과 연동하면 버그를 찾고 수정하는 일을 훨씬 편하게 할 수 있다.

서버 프로그램(VisualSVN) 설치

SVN 서버는 repository를 관리하기 위한 것으로 보통 오픈 프로젝트의 경우엔 웹, 회사 프로젝트엔 회사 내 서버 컴퓨터에 설치한다. 여기에서는 간단히 윈도우용 프로그램인 VisualSVN Server를 서버 컴퓨터(또는 로컬 컴퓨터)에 설치하는 방법을 알아본다.

VisualSVN의 클라이언트 버전은 Visual Studio의 Add-in 형태로 설치되어 Visual Studio에서 작업 후 쉽게 서버에 commit하거나 update할 수 있으나 유료 프로그램이다. 하지만 VisualSVN Server는 무료이므로 인터넷에서 다운 받아 바로 설치할 수 있다. 설치 과정은 다음과 같다.

  1. 아래의 주소에서 다운
    http://www.visualsvn.com/server/download/
  2. Component 선택 화면에서 VisualSVN Server and Management Console 선택
  3. 포트 설정 (주로 8443 또는 443), 권한 설정(Subversion Authentication 권장)
  4. 설치 완료

VisualSVN의 설정은 다음과 같이 한다.

  1. VisualSVN 실행 후 왼쪽의 Repositories를 마우스 오른쪽 클릭하고 Create New Repository 선택
  2. Repository 이름, 구조 설정하고 완료
  3. 왼쪽의 Users를 마우스 오른쪽 클릭하고 Create User 선택
  4. 사용자명(아이디), 비밀번호 입력 후 완료
  5. Repository를 마우스 오른쪽 클릭한 후 권한 설정

클라이언트 프로그램(Tortoise SVN) 설치

Client 프로그램 중 오픈 프로젝트에서 가장 많이 쓰이는 프로그램은 단연 Tortoise SVN이다. Tortoise SVN의 설치는 다음과 같이 한다.

생략

Tortoise SVN 설치 후에는 먼저 서버의 Repository와 클라이언트의 작업 디렉토리를 check out이라는 작업을 통해 동기화시켜야 한다. 다음과 같이 할 수 있다.

  1. 새 디렉토리 생성
  2. 폴더를 마우스 오른쪽 클릭한 후 SVN Check Out 선택
  3. 순서 없는 목록Repository의 URL 입력.
    일반적인 경우 URL은 http://IPAddress:443/svn/repositoryName 또는 https://IPAddress:8443/svn/repositoryName 이다.
    이는 VisualSVN Server 프로그램에서 확인할 수 있다. 입력 후 repository에 저장된 파일을 확인하려면 오른쪽의 … 버튼을 클릭한다.
  4. 설정에 문제 없으면 OK 클릭

동기화를 마친 후 이 디렉토리는 working copy가 된다.

Tortoise SVN에는 수정사항을 비교(diff)하기 위한 diff viewer를 기본으로 내장하고 있으나 WinMerge라는 전용 diff viewer를 사용하면 더 깔끔한 디자인의 인터페이스에서 편리하게 diff 작업을 할 수 있다.

  1. WinMerge 설치
  2. Tortoise SVN를 이미 설치했다면 설치 중 Tortoise SVN 지원 옵션 선택
  3. Tortoise SVN을 설치 안 했거나 실수로 2번의 옵션을 선택하지 않은 경우에는 Tortoise SVN 설정 – External Programs – Diff Viewer 선택 후 WinMerge 디렉토리로 가서 WinMergeU.exe 선택. Tortoise SV의 설정 대화상자는 아무 폴더로 가서 해당 폴더를 마우스 오른쪽 클릭 후 TortoiseSVN – Settings 를 선택하면 열 수 있다.

콘솔 명령어

  • 새 디렉토리 생성
$ mkdir svn_console_test
  • import 하기
$ svn import svn_console_test https://192.168.0.72/svn/study/trunk/svn_console_test -m "console import"
$ svn import import_path svn://192.168.0.72/trunk/import_path --no-ignore ==> 폴더만 생성
  • 디렉토리 삭제
$ rm -rf svn_console_test
  • checkout 하기
$ svn co https://192.168.0.72/svn/study/trunk/svn_console_test ./svn_console_test
  • 하위 폴더 생성
$ cd svn_console_test
$ mkdir folder_add_test
  • svn에 추가 하기
$ svn add folder_add_test
  • 커밋하기
$ svn commit folder_add_test -m "add new folder"
  • 새 파일 추가
$ touch new_file
  • svn에 한꺼번에 추가
$ svn add ./*
  • svn에 한꺼번에 커밋
$ svn commit ./* -m "add new file"
  • 현재 연결된 repository url 보기
$ svn info
  • 로그 보기
$ svn log
$ svn log -l 10 -> 상위 10개의 로그만 보기
  • commit log 수정하기
$ svn propset --revprop -r 리비전번호 svn:log "수정할 메시지"
  • 소스 충돌시 해결
$ svn resolver -R ./
  • 소스가 lock 되어 있을 경우 해제
$ svn cleanup
  • 서버와 소스 동기화
$ svn update
$ svn update -r 100 -> revision 100 으로 업데이트
  • 처음으로 repository에 파일 추가하기
$ svn mkdir svn://192.168.0.72/trunk/new_dir
  • 삭제
$ svn del [file_name] or [dir]
$ svn del svn://192.168.0.72/trunk/test_project

참고