- SVN 이란
: 서브버전(Subversion)은 소프트웨어 버전 관리 시스템.
명령행 인터페이스에서 사용하는 명령어를 따서 SVN이라고 줄여서 부르기도 한다.
서브버전은 서버-클라이언트 모델을 따른다. 서버는 작업하는 컴퓨터내에 둘 수도 있고, 전산망에 연결된 별도의 컴퓨터에 두고 사용할 수도 있다. 서브버전 서버와 클라이언트는 http, https, svn, svn+ssh의 규약으로 통신한다.
- 브랜치와 태크 개념 설명
- repository(저장소)
: 프로젝트의 파일 및 변경 정보가 저장되는 장소
- trunk
: 메인 개발 소스. 개발 소스를 commit했을 대 개발 소스가 모이는 곳
- brunch
: trunk에서 분기된 개발 소스. 실험적인 기능을 추가하거나 출시를 우한 안정화 버전 작업을 할 때.
- tag
: 특정 시점에서 프로젝트의 스냅샷을 찍어두는 것. brunch와 tag는 사실 동일하지만, tag는 관례적으로 더 이상 개발하지 않고 어떤 버전으로 딱 얼려두는 것. tagging하는 것도 revision으로 기록 된다.
- SVN 사용 과정
-서버 소스를 checkout한다.
-소스를 수정한다.
-commit할 파일을 add한다.
-update를 통해서 저장소에 새로운 파일이 없는지 확인한다.
-update 과정에서 conflict가 일어나면 이를 해결한다. (수정후, resolve해주어야함)
-commit을 해서 저장소에 파일을 등록한다.
- SVN명령어 정리
import
: 가장 처음 svn server와 연결했을 때 처음으로 파일을 업로드할 때 한번만 사용함.
svn import sampledir svn://127.0.0.1/TestRepo/trunk
checkout
: 원격 저장소에서 최신 버전의 소스코드를 최초로 받아오는 것
svn checkout[co] svn://127.0.0.1/TestRepo #sandbox 디렉토리에 체크아웃 받음
svn checkout[co] svn://127.0.0.1/TestRepo LocalRepo # source 디렉토리에 체크아웃 받음
export
: 버전 관리 파일들을 뺀 순수한 파일들만 빼내는 것
svn export svn://127.0.0.1/TestRepo
update[up]
: 로컬 저장소에 있는 파일들을 원격 저장소의 최신 버전으로 받아오는 것(다운로드)
svn update[up]
svn update[up] -r 1 # 현재 작업 내용을 리비전 1로 갱신. (최신 리비전보다 이전으로 되돌리는 것도 가능)
add
: 버전 관리 대상으로 파일을 등록하는 것(업로드). 저장소에 저장은 되지 않음.(add후 commit해야 적용된다.)
svn add main.c
commit[ci]
: 로컬 저장소의 변경된 내용을 서버로 전송하는 것. revision수가 올라간다. 커밋 전에는 update를 실행해 최신 소스로 변경하고, 컴파일이 성공했을 경우에만 커ㅣㅅ을 해야한다.
svn commit[ci] -m "수정 사항에 대한 메시지 입력"
status[stat, st]
: 로컬 저장소에서 변경된 이후 아직 저장소로 commit되지 않은 내용을 확인
A: 추가됨 / C: 충돌 / D: 삭제됨 / M: 수정됨 / G: 병합됨
svn status[stat, st] main.c
revert
: 로컬 저장소의 내용을 이전 상태로 되돌리는 것
svn revert main.c #로컬 저장소 복사본 main.c에 가했던 변경들을 모두 취소함
diff[di]
: 소스의 차이점 비교
svn diff[di]
svn diff[di] main.c #저장소의 내용과 현재 작업 내용 중 main.c 파일의 차이를 확인
svn diff[di] -r 1:2 #리비전 1과 2의 차이를 확인
svn diff[di] -r 1 main.c #리비전 1과 현재 작업중인 main.c의 차이를 확인
svn diff[di] -r 2 #리비전 2와 현재 작업중인 디렉토리의 파일 내용 차이를 확인
log
: 리비전 로그 보기
svn log
svn log -r 4 #리비전 4의 변경사항 로그 보기
svn log -r 4 test.c #리비전 4의 test.c 파일의 변경사항 로그 보기
svn log -r 4:5 #리비전 4~5의 변경사항 로그 보기
참고 1: 서브비전 wiki