728x90
반응형

SVN의 대해서
- CVS를 대체하기 위해 2000년부터 콜랩넷에서 개발
- 클라이언트-서버 모델을 사용
- 서버는 로컬 컴퓨터 내에 둘 수도 있고, 전산망에 연결된 별도의 컴퓨터에 두고 사용 가능
- 통신규약 : http, https, svn, svn+ssh를 사용
SVN의 기능
- 소프트웨어 개발시 개발시 소스의 수정과 변경사항을 관리가 용이
- 작업 내역 커밋시 소스변경사항과 히스토리가 즉시 서버로 전송 및 저장
- 수정 내영과 히스토리 파악이 매우 용이함
SVN의 워크플로우
SVN의 워크플로우는 다음과 같다.
- 최초 서버 소스를 Checkout하여 로컬에 저장소를 저장
- 소스를 수정
- Commit할 파일을 add
- Update를 통해서 저장소에 새로운 파일이 없는지 확인
- Update 과정에서 confilct가 일어나면 해결( 수정후, resolve 하면 됨)
- Commit을 해서 저장소에 파일을 등록
SVN의 용어

- repository(저장소)
- 프로젝트의 파일 변경과 히스토리 정보가 저장되는 장소
- trunk
- 메인 개발 소스
- 메이저 릴리즈
- branch
- trunk에서 분기된 개발 소스
- 즉, 메인 코드와 분리하여 별도의 가지로 프로젝트를 수행
- 실험적이 기능 추가나 출시를 위한 안정화 버전 작업을 할 때
- 분리된 branch는 개발 과정과 안정화 단계에 들어서면 메인 trunk에 Merge 함
- tag
- 특정 시점의 revision을 표시하고 개발이나 수정이 다시 필요한 시점에 태그를 활용
- tag는 관례적으로 개발을 하지 않고 특정 시점을 열려두는 것
- tag는 trunk의 각 revision을 나타냄
- branch와 tag
- branch와 tag는 trunk를 복사하는 개념이며, 완전 복사가 아닌 링크를 거는 방식이기에 적극적으로 활용하는 것이 좋음
- Revision
- 수정된 버전
- Repository에 새로운 파일, 수정 등을 Commit할 때 마다 번호가 하나씩 증가
- Head
- Repository에 저장된 최신 revision을 의미
- Base
- 클라이언트가 Checkout, Update 등의 명령을 통해 Repository로 부터 내려받은 revision을 의미
- 만약, Head와 Base의 revision이 다르면, Commit이 거부되고 Update를 먼저 수행해야 Commit이 가능해짐
SVN 명령어 정리
- svn [명령어] [옵션]
- .svn : 버전관리 관련 디렉토리
- 예시
- 서버 IP or Domain : svn-domain
- SVN 서버 저장소 경로 : svn/example/trunk
- SVN 로컬 저장소에 업로드할 디렉토리 : /home/exam
import : 맨 처음 프로젝트 시작할 때, 새로운 Repository를 저장소에 등록하는 명령어
# svn import [로털 디렉토리] svn://[IP or Domain]/[저장소 경로]
$ svn import /home/exam svn://svn-domain/svn/example/trunk
export : 버전 관리 파일들 뺀 소스코드만 받아오는 명령어 ( .svn 디렉터리 제외 )
$ svn export svn://svn-domain/svn/example/trunk
checkout[co] : 저장소에서 최신 버전 소스를 받아오는 명령어, ( .svn 포함 )
# svn checkout svn://[IP or Domain]/[저장소 경로]
$ svn checkout svn://svn-domain/svn/example/trunk
update : 로컬 저장소로 리비전을 받아오는 명령어
# 최신 revision을 받아옴
$ svn update
# revision 1로 받아옴
$ svn update -r 1
add : 버전 관리 대상으로 파일을 등록하는 명령어, add후 commit해야 저장소에 업로드 됨
$ svn add hello.java
commit[ci] : add한 대상들을 저장소로 업로드, revision 카운트 증가
# -m을 통해 메시지 추가 가능
$ svn commit -m "hello.java 추가"
status[stat, st] : 로컬 저장소에서 commit 되기 전 내용을 확인
# A : 추가
# C : 충돌
# D : 삭제
# M : 수정
# G : 병합
# 모든 상태를 확인
$ svn status
# 일부 파일만 확인
$ svn status hellow.java
revert : 로컬 저장소의 내용을 이전 상태로 되돌리는 명령어
# 로컬 저장소에서 add한 hello.java에 변경된 사항을 모두 취소함
$ svn revert hello.java
log : revision 로그 보기
# 모든 로그 확인
$ svn log
# revision 1의 변경사항 로그 확인
$ svn log -r 1
# revision 1004의 hello.java 파일의 변경사항 로그 확인
$ svn log -r 1004 hello.java
# revision 1~1004 범위 변경사항 로그 확인
svn log -r 1:1004
info : 로컬 저장소 또는 원격 저장소의 파일, 폴더 정보를 확인
# 로컬 저장소 표기
$ svn info
$ svn info /home/svn
# 원격 저장소 표기
$ svn info svn://svn-domain/svn/example/trunk
SVN 관련 소프트웨어
- 윈도우 서버 - VisualSVN
- 윈도우 클라리언트 - TortoiseSVN(윈도우용)
서브버전을 윈도우에서 쉽게 사용할 수 있게 해주는 도구
탐색기에 통합된 프론트엔드 성격을 지녀 팝업 메뉴/쉬운 명령법 등의 장점을 가짐 - 리눅스 서버 - svnserve
- 리눅스 클라리언트 - svn client(리눅스용)
리눅스에 디폴트로 설치된 경우가 많음 - Subclipse(개발통합환경)
개발통합환경인 이클립스에서 서버버전을 사용할 수 있도록 지원하는 플러그 인 - AnkhSVN
VSCode와 통합을 제공
출처
728x90
반응형
'SW 공학 & 프로그래밍 언어 > 형상관리' 카테고리의 다른 글
| [Git] Git 개념 및 명령어 정리 (0) | 2022.01.16 |
|---|