본문 바로가기
SWE/Learning Diary

SVN이란? / TortoiseSVN / 리눅스 SVN 명령어

by S나라라2 2019. 10. 30.
반응형
  • 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

참고 2: https://hellowoori.tistory.com/57

반응형