이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

Tool 사용법/SVN

SVN 이란?

이쿠우우 2020. 9. 11. 18:43
반응형

SVN

SubVersion 의 줄임말로 형상관리툴임

프로젝트 소스는 Trunk 라는곳에 위치

자신의 로컬에 Trunk 소스를 다운받아(update) 수정 및 추가 후 다시 업로드(commit) 하는 방식

형상관리란?
프로젝트를 진행할 때 각자 업무를 나눠서 맡은 부분을 개발하게 되는데
각자가 개발한 코드 혹인 문서들을 하나의 관리 도구에서 통합적, 버전별로 
관리하게 되는 것을 형상관리 혹은 버전관리라고 부름

 

 

SVN 용어

 

Repository
프로젝트 파일 및 변경 정보가 저장되는 저장소
모든 프로젝트의 프로그램 소스들, 변경 사항이 저장됨
네트워크를 통해서 여러 사람이 접근 할 수  있음

 

Trunk
개발 소스를 commit 했을 때 개발 소스가 모이는 곳으로 프로젝트에서 가장 중심이 되는
디렉토리, 소스와 파일 포함
현재 개발중인 안정화된 버전의 소스가 보관되는 폴더
보통 trunk의 소스를 dev branches로 생성하여
개발 작업 진행 후 QA 완료 후 배포되기 전에 trunk와 merge작업을 진행
trunk는 항상 안정된 버전의 소스가 보관되어야 함

 

 

Tag
tag 의 경우 SVN copy 명령을 사용해서 생성
해당 Revision 의 상태 정보만 가져오는것이기 때문에
tag 를 많이 생성한다고 해서 용량이 늘어지는 않음
특정 시점의 소스(trunk, branches)를 보관(snapshot)하기 위해 사용하는 폴더
보통 Release 버전 관리를 위해 많이 사용 함
프로그램을 개발하면서 정기적으로 릴리즈 할 때 0.1, 0.2, 1.0 식의 버전의 소스를 따로 저장하는 공간
한 번 만들면 수정하지 않음

 

 

Branch
Branch 의 경우 SVN copy 명령을 사용해서 생성
해당 Revision 의 상태 정보만 가져오는것이기 때문에
Branch 를 많이 생성한다고 해서 용량이 늘어지는 않음
trunk에서 분리/복사한 소스로 버전별 배포판을 만들거나
trunk와 별도로 운영환경을 위한 안정화된 소스 관리 목적으로 사용
특정 시점의 소스(trunk, tags)로 개발을 진행할 때 사용하는 폴더
작업자, 작업시점에 따라 다양한 branches가 생성될 수 있다.(dev-, RB-)
수정이 계속해서 발생하다가 궁극적으로 trunk에 merge되는 것이 일반적임

 

Revision
소스파일등을 수정하여 commit 할 시 일정한 규칙에 의해 숫자가 증가.
저장소에 저장된 각각의 파일 버전.
리비전을 보고 프로젝트의 진행 상황을 알 수 있음

 

Import
빈 Repository에 맨 처음 파일들을 채우는 것

 

Export
버전 관리 파일들을 뺀 순수 파일만 빼내는 것

 

Checkout
저장소에서 최신 버전의 소스코드를 최초로 받아오는 것 / Repository에서 프로젝트 관련 파일들을 받아옴

 

Update
로컬 저장소에 있는 파일들을 저장소의 최신 버전으로 받아 오기

 

Commit
로컬 저장소의 변경된 내용을 서버로 전송 / Checkout한 파일의 수정사항을 갱신

 

Revert
로컬 저장소의 내용을 이전 상태로 돌림

 

Add
버전관리 대상으로 파일 등록
앞으로 사용자가 해당 파일 버전을 관리하겠다라는 의미

 

Shelve
로컬 작업 내용을 잠시 백업하는 것

 

Merge
내가 작업한 부분과 다른 사람이 작업한 부분을 병합

 

Conflict
여러 개발자가 공동 개발하는 경우
동일한 부분의 소스 작업을 하면 제대로 커밋되지 않는 상황이 발생하는데
이 상황을 Conflict 라고 함

 

 

TortoiseSVN

간편하게 SVN 을 활용할 수 있게 해주는 SVN client tool.

 

Checkout, Import

서버의 Repository 에 있는 컨텐츠를 최초로 사용자 컴퓨터로 가져올때 실행하는 명령

최초 한번만 실행

(Checkout)원격 저장소에서 최신 버전의 코드를 최초로 받아오는것 

[Console 명령어]

svn checkout <svn repository 주소> 

  • source 디렉토리에 체크아웃 받음

svn checkout <svn repository 주소> <checkout 받고자 하는 directory> 

  • source 디렉토리에 체크아웃 받음

(import) 아무것도 들어있지 않은 원격 저장소에 처음으로 파일을 업로드 

[Console 명령어]

svn import <업로드 하고자하는 directory> <svn repository 주소>

 

 

 

Update (코드 내려받기)

Repository에 있는 파일(소스)들을 사용자 컴퓨터로 받아오는 기능

[Console 명령어]

svn update

svn update -r 1

 

-r 옵션 : 현재 작업내용을 리비전 1으로 갱신 (최신 리비전보다 이전으로 되돌리는것 가능)

 

 

 

Add (변경사항 적용)

버전 관리 대상으로 파일을 등록하는 것 (업로드)

저장소에 저장되지는 않음 (add 이후 commit 해야 적용됨)

 

[Console 명령어]

svn add <대상 파일 or 경로>

예) svn add .

 

 

Commit (변경사항 적용)

사용자 컴퓨터에서 작업하고 있는 파일(소스)들을 

서버의 Repository 로 업로드 하는 기능

[Console 명령어]

svn commit -m "<커밋에 대한 설명>"

 

 

Revert (이전으로 되돌리기)

로컬 저장소의 내용을 이전 상태로 되돌리는 것

 

[Console 명령어]

svn revert <대상 파일 or 경로>

 

예) svn revert main.c

로컬 저장소의 복사본 main.c 에 작업됐던 모든 변경들을 취소함

 

 

 

Shelve (백업)

작업하던 소스를 적용하지 않고 

잠시 다른 작업을 해야할 때 백업해주는 기능

참고) git의 stash 와 동일한 기능

 

 

Merge (branch 합치기)

branch 에서 작업한 내용을 하나로 합치는 기능

 

 

 

 

 

 

 

 

 

 

 

 


제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!


 

 

 

 

반응형

'Tool 사용법 > SVN' 카테고리의 다른 글

SVN Revision 주석 다는 법  (0) 2020.09.11