C:\>svn --version
svn, 버젼 1.4.6 (r28521)
Dec 20 2007, 16:33:06에 컴파일 됨
Copyright (C) 2000-2007 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
저장소(repository) 접근 모듈(RA) 목록:
* ra_dav : WebDAV (DeltaV) 프로토콜을 통해 저장소에 접근하는 모듈
- 'http' 스키마를 처리합니다.
- 'https' 스키마를 처리합니다.
* ra_svn : svn 네트워크 프로토콜을 사용하여 저장소에 접근하는 모듈
- 'svn' 스키마를 처리합니다.
* ra_local : 로컬 디스크에 있는 저장소를 접근하기 위한 모듈
- 'file' 스키마를 처리합니다.
----
저장소 Direcotory 생성
D:\MyRepository\svn>svnadmin create D:\MyRepository\svn
---
저장소에 File 추가
D:\MyRepository\svn\temp>svn import -m "SVN Readme" file:///D:/MyRepository/svn
현재 Directory (D:\MyRepository\svn\temp)에 있는 파일을 file:///D:/MyRepository/svn Repository에 저장한다.
---
CheckOut 하기
D:\test>svn co file:///D:/MyRepository/svn
A svn\day.txt
체크아웃된 리비전 3.
---
CheckOut된 file 상태보기
D:\test\svn>svn status Day.txt
M day.txt
---
D:\test\svn>svn diff day.txt
Index: day.txt
===================================================================
--- day.txt (revision 3)
+++ day.txt (working copy)
@@ -1,3 +1,5 @@
monday
tuestday
-wednesday
\ No newline at end of file
+wednesday
+thursday
+friday
\ No newline at end of file
---
Commit
D:\test\svn>svn commit -m "Add"
전송중 day.txt
파일 데이터 전송중.
커밋된 리비전 4.
---
log 보기
D:\test\svn>svn log Day.txt
------------------------------------------------------------------------
r4 | 2008601 | 2008-03-07 09:59:07 +0900 (금, 07 3 2008) | 1 line
Add
------------------------------------------------------------------------
r3 | 2008601 | 2008-03-07 09:52:46 +0900 (금, 07 3 2008) | 1 line
SVN Readme
------------------------------------------------------------------------
---
Subversion은 Locking 이 없다. 하지만 File 관리가 가능하다.
충돌 상황을 다음과 같이 해결한다.
---
기본 Directory가 아닌 다른 Directory에 CheckOut 합니다.
D:\test>svn co file///d:/myrepository/svn aladdin
---
원래의 svn 폴더에서 file을 수정한다.
D:\test>cd svn
D:\test\svn>notepad day.txt
D:\test\svn>svn commit -m "add saturday"
전송중 day.txt
파일 데이터 전송중.
커밋된 리비전 5.
---
aladdin 폴더의 day.txt의 Revision은 4이고 svn의 현재 revision은 5 입니다.
다른 사용자가 갱신을 한 것이지요.
D:\test\aladdin>svn status --show-updates
* 4 day.txt
리비전의 상태: 5
---
현재 directory의 day.txt 와 저장소의 day.txt를 비교하도록 하기위해 -rHEAD Option을 사용했습니다.
D:\test\aladdin>svn diff -rHEAD day.txt
Index: day.txt
===================================================================
--- day.txt (revision 5)
+++ day.txt (working copy)
@@ -2,5 +2,4 @@
tuestday
wednesday
thursday
-friday
-saturday
\ No newline at end of file
+friday
\ No newline at end of file
aladdin에 있는 File을 수정하지 않았으므로 위와 같은 결과를 얻음
---
Update 한다.
D:\test\aladdin>svn update
U day.txt
업데이트 된 리비전 5.
---
이제 두사람이 각각 같은 파일을 변경한 경우
---
svn과 aladdin이 가진 day.txt 파일 각자를 변경합니다.
---
먼저 svn을 Commit.
---
D:\test\svn>svn commit -m "Add It's week"
전송중 day.txt
파일 데이터 전송중.
커밋된 리비전 6.
D:\test\svn>cd..
D:\test>cd aladdin
---
alladin을 Commit.
---
D:\test\aladdin>svn commit -m "Add Sunday"
전송중 day.txt
svn: 커밋이 실패하였습니다:
svn: 시간이 오래되었습니다.: 'day.txt' (트랜잭션 '6-1')
---
aladdin은 최신 버전이 맞지 않으므로 실패 하였습니다.
type
---
D:\test\aladdin>svn update
C day.txt
업데이트 된 리비전 6.
D:\test\aladdin>type day.txt
monday
tuestday
wednesday
thursday
friday
<<<<<<< .mine
saturday
sunday=======
saturday
It's week>>>>>>> .r6
---
svn, aladdin모두의 변경이 적용된 상태가 되었다.
---
Commit을 하려 하나..
D:\test\aladdin>svn commit -m "saturday"
svn: 커밋이 실패하였습니다:
svn: 커밋 멈춤: 'D:\test\aladdin\day.txt' 이(가) 아직 충돌 상태임.
---
충돌 상황을 해제 해야
D:\test\aladdin>svn resolved day.txt
충돌상황 해제됨 'day.txt'
Commit 된다.
D:\test\aladdin>svn commit -m "saturday"
전송중 day.txt
파일 데이터 전송중.
커밋된 리비전 7.
D:\test\aladdin>type day.txt
monday
tuestday
wednesday
thursday
friday
<<<<<<< .mine
saturday
sunday=======
saturday
It's week>>>>>>> .r6
---
verbose Option은 더 자세한 정보를 보여줍니다.
D:\test\svn>svn log --verbose Day.txt
---
Delete
D:\MyRepository\svn>svn delete -m "SVN Delete" file:///D:/MyRepository/svn
---
편집기 설정 set SVN EDITOR=notepad
---
위와 같은 명령으로 Apache와 같은 서버를 쓰지 않고도 Local로 file Protocol을 이용하여 Version 관리를 할 수 있습니다.
그러므로 서버에 SVN을 설치하고 Client는 Terminal로 서버에 접근하여 File을 관리 할 수도 있겠네요.
참조 : Pragmatic Version Control Using Subversion / Mike Mason
'개발환경' 카테고리의 다른 글
Hudson 설치 (0) | 2008.03.12 |
---|---|
SVN Command (0) | 2008.03.07 |
SVN Protocol을 이용한 버전 관리 (0) | 2008.03.07 |
AutomationBuildSystem 구현 계획 (0) | 2008.03.06 |
EclisePlugin Subversive 설치중 (0) | 2008.03.05 |