설치
리눅스
1
2
3
4
5
// 데비안 계열
sudo apt-get install subversion
// 레드햇 계열
sudo yum install subversion
윈도우 : TortoiseSVN
https://tortoisesvn.net/downloads.html
커맨드라인에서 사용 가능하게끔 하려면 command line client tools 옵션을 적용해야 합니다.
맥
1
2
brew options subversion
brew install (OPTIONS) subversion
기타 OS
https://subversion.apache.org/packages.html
명령어
자주 사용하는 명령어
명령어 | 설명 | 옵션 | 옵션설명 |
---|---|---|---|
svn checkout [URL][PATH] | 원격 repository에서 소스를 받아옵니다. | ||
svn add [파일/디렉토리] | 버전관리 대상으로 파일을 등록합니다. 원격 repository에 올리러면 추가로 commit을 해야합니다. |
||
svn commit | 변경사항을 원격 repository에 적용합니다. | -m | commit 메세지 |
svn update | 원격 repository의 변경사항을 local에 업데이트받습니다. | -r | 특정 revision으로 되돌림 |
svn delete [파일/디렉토리] | 파일을 버전관리 대상에서 제거합니다. 디렉토리를 commit을 하더라도 이 파일은 예외가 됩니다. |
||
svn revert [파일/디렉토리] | 대상의 로컬에서의 변경사항을 취소합니다. repo로부터 받아온 내용으로 원복합니다. |
||
svn info [파일/디렉토리] | 대상 파일/디렉토리의 URL 경로나 마지막 수정일자 등 정보를 제공합니다. |
||
svn log [로컬디렉토리] | 로컬의 로그를 보여줍니다. | ||
svn status [파일/디렉토리] | commit되지 않는 local의 변경사항을 확인합니다. | ||
svn diff [파일 혹은 리비전] | 소스의 변경사항을 확인합니다. 자세한 사용법은 이하 참고 |
-r | revision 지정 |
svn cleanup | svn 오류가 발생할 시 사용합니다. 오류나 불필요한 파일의 삭제 등이 진행됩니다. |
||
svn list [svn repo url] | 해당 svn repository에 포함된 파일과 디렉토리 리스트를 반환합니다. |
SVN 디렉토리 생성 관련
명령어 | 설명 | 옵션 | 옵션설명 |
---|---|---|---|
svnadmin create [디렉토리] | 대상 디렉토리를 svn 저장소로 만듭니다. | ||
svn import [가져올파일/dir] [svn path] | 기존의 파일이나 디렉토리를 svn에 추가합니다. 최초 1회에만 진행. |
-m | 메세지 남기기 필수 |
예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# checkout
$ svn checkout 111.111.1.1:9000/src
# add / delete
$ svn add ./image
$ svn add ./icon/fabicon.png
$ svn delete ./image
# commit
$ svn commit -m "add file transfer function"
# update
$ svn update # 최신 revision으로 업데이트
$ svn update -r 1 # revision 1로 업데이트 (혹은 되돌림)
# status
$ svn status ./
$ svn status ./src/main.java
# dfii
$ svn diff 파일 # repository의 파일과 로컬의 현재 파일 차이를 확인
$ svn diff -r 1:2 # revision 1과 2의 차이를 확인
$ svn diff -r 1 파일 # revision 1과 현재 파일의 차이를 확인
$ svn diff -r 1 # revision 1과 현재 디렉토리의 차이를 확인
SVN repository 경로
구분 | 경로 |
---|---|
로컬에서 SVN을 사용할 경우 | file:///path/to/repository |
원격 SVN 서버를 사용할 경우 | svn:/hostname/path/to/repository |
HTTP를 사용할 경우 | http://hostname/path/to/repository |
예제
(1) SVN repository 만들기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
### repository 디렉토리 만들기
$ cd C:\Users\USER\Desktop\test_workspace\
$ mkdir 2_svn
$ cd ./2_svn
$ dir
>>> 없음
### 디렉토리를 svn repository로 만들기
$ svnadmin create ./
### svn 디렉토리가 되면 내부에 svn 관련 파일이 생성됨
$ dir
>>> conf
>>> db
>>> format
>>> hooks
>>> locks
>>> README.txt
(2) 기존 존재하는 파일을 svn repository로 가져오기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
### svn 디렉토리 만들기
$ mkdir 2_svn
$ cd ./2_svn
$ svnadmin create ./
### svn info, URL 확인
--- 로컬에서 SVN을 사용할 경우 file:///path/to/repository
--- 원격 SVN 서버를 사용할 경우 svn:/hostname/path/to/repository
--- HTTP를 사용할 경우 http://hostname/path/to/repository
$ svn info file:///C:/Users/USER/Desktop/test_workspace/svn/2_svn
>>> Path: 2_svn
>>> URL: file:///C:/Users/USER/Desktop/test_workspace/svn/2_svn
>>> Relative URL: ^/ (상대경로)
>>> Repository Root: file:///C:/Users/USER/Desktop/test_workspace/svn/2_svn
>>> Repository UUID: 8d111c46-0b4d-ea46-b76f-e0d7c70dfc40
>>> Revision: 0
>>> Node Kind: directory
>>> Last Changed Rev: 0
>>> Last Changed Date: 2023-07-30 21:26:47 +0900 (일, 30 7 2023)
### 기존 폴더
$ cd ../1_existed_dir
$ dir
>>> test1.png
>>> test2.png
>>> 01.mov
### 사전 용량 확인
$ cd ..
$ dir /s 1_existed_dir
>>> ... 152,145,607 바이트
$ dir /s 2_svn
>>> ... 47,553 바이트
### ★ 기존의 폴더 내 파일을 svn으로 가져오기 ★
$ svn import ./1_existed_dir file:///C:/Users/USER/Desktop/test_workspace/svn/2_svn -m "svn init"
### 용량 확인
$ dir /s 2_svn
>>> ... 146,591,995 바이트
(3) checkout
1
2
3
4
5
6
7
8
9
10
11
12
13
### local의 디렉토리 만들기
$ mkdir 3_local
### checkout
$ svn checkout file:///C:/Users/USER/Desktop/test_workspace/svn/2_svn ./3_local
>>> ... Checked out revision 1.
### checkout 결과 보기
$ dir 3_local
>>> test1.png
>>> test2.png
>>> 01.mov
>>> 152,145,607 바이트
(4) add, commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
### local에서 작업
$ cd 3_local
$ mkdir example
### add 없이 commit
$ svn commit ./ -m "commit1"
>>> 변경사항인 "mkdir (= add folder)"이 적용되지 않음
### add 후 commit
$ svn add ./example
>>> A example
$ svn commit ./ -m "commit2"
>>> Adding example
>>> committing transaction ...
>>> Committed revision 2.
$ svn log ./
>>> r3 | USER | 2023-07-30 22:04:51 +0900 (일, 30 7 2023) | 1 line
>>> r2 | USER | 2023-07-30 22:04:26 +0900 (일, 30 7 2023) | 1 line
>>> commit2
>>> r1 | USER | 2023-07-30 21:59:55 +0900 (일, 30 7 2023) | 1 line
>>> svn init
Reference
https://onestone-note.tistory.com/36
https://typingdog.tistory.com/99
윈도우 cmd에서 SVN 사용 : 링크
맥 svn 설치 : 링크
svn cleanup : https://itlearningcenter.tistory.com/entry/%E3%80%90SVN%E3%80%91TortoiseSVN-clean-up
명령어 : https://signpen.net/2515287
명령어 : https://starplaying.tistory.com/460