상태코드
- A
- 작업 사본에 새로 추가됨
- C
- 엡데이트나 병합 때문에 충돌이 발생함
- D
- 작업 사본에서 삭제됨
- G
- 저장소의 버전과 병합됨
- I
- 작업 사본에서 무시됨
- M
- 작업 사본에서 수정됨
- R
- 작업 사본에서 대체됨
- ?
- 버전 제어 대상이 아님
- !
- 작업 사본에 없거나(svn 명령어를 통하지 않고 삭제됨) 불완전한 상태임
임포트
#import 명령어 확인 svn ? import #svn import 로컬위치 소스위치 -m="메세지" --no-ignore --force --username username # --no-ignore 모두 등록 # -- force 오류 무시 강제 적용 svn import -m="Import" www svn://localhost/project_name/trunk/
체크아웃, 소스 내려받기
svn checkout 소스 로컬위치 svn co svn://localhost/projectname/trunk ./
상태확인
svn status
변경내역보기
svn diff src/
커밋, 변경사항 적용하기
svn commit -m "변경내역"
파일, 디렉토리 추가
svn add 소스 타켓위치 svn add README.txt docs/ # 디렉토리 전체 추가 # svn status | awk '{if ($1 == "?") print $2 }' | xargs svn add svn ci -m "docs/README.txt 추가" # http://stackoverflow.com/questions/2430441/svn-recurisvely-add-files find . -name .svn -prune -o -name "*.php" -exec svn add --parents {} ';'
파일, 디렉토리 삭제
svn delete 위치/파일 svn delete docs/README.txt svn ci -m "docs/README.txt 삭제"
파일, 디렉토리 이동 및 이름변경
svn mv 소스 타겟 svn mv docs/README.txt docs/README.back.txt svn ci -m "docs/README.txt 파일네임 변경" svn mv docs/README.txt back/README.txt svn ci -m "README.txt 파일 이동"
파일, 디렉토리 수정사항 되돌리기, 커밋되지 않았을 경우 가능
# svn revert 소스 svn revert docs/README.txt svn revert -R docs/ # 전부 되돌리기 svn revert -R .
파일/폴더 무시하기
# 무시하려는 파일이 존재하는 디렉토리에서 svn:ignore라는 프로퍼티를 편집한다. # svn:ignore 에 등록된 내용은 버전 관리대상에서 제외된다. # 한주에 파일하나씩 나열딘 단순한 텍스트로 와일드카드(*.tmp)를 지원한다. svn propedit svn:ignore . svn propset svn:ignore settings.php # 최상위 폴더에서 제외 대상 폴더 목록을 모두 등록해서 관리한다. svn propset svn:ignore "./application/cache ./application/logs ./static/_upload ./static/_tmp" . # 제외 대상을 설정하고 저장
최신버전으로 업데이트
svn update
업데이트 병합
svn update Conflict discovered in 'docs/README.txt' Select: (p) postpone, (df) diff-full, (e) edit, (h) Help for more options:
충돌 해결 신고, 문제 해결후 svn에 해결되었다고 신고
svn resolved docs/README.txt
로그보기
svn log | less # 저장소 로그보기 svn log svn://localhost/project/trunk
변경 사용자 정보 확인, blame
# prais, annotate, ann svn blame docs/README.txt
리비전 되돌리기
svn merge -r 14:13 .
브랜치 생성
# 릴리즈용 브랜치 생성 svn copy -m "브랜치 1.0 생성" \ svn://localhost/project/trunk \ svn://localhost/project/branches/Relese-1.0/ # 브랜치 체크아웃 svn checkout \ svn://localhost/project/branches/Relese-1.0 \ project-1.0
브랜치 스위치
svn switch svn://localhost/project/branches/Relese-1.0
Trunk 하나의 리비전 Branches에 병합
svn merge -c 17 svn://localhost/project/trunk svn commit -m "trunk 리비전 17 병합"
Trunk 여러개의 리비전 Branches에 병합
svn merge r 19:22 svn://localhost/project/trunk svn commit -m "Trunk 리비전 19-22 병합"
Trunk 수정사항을 Branches 병합
svn update svn merge --reintegrate svn://localhost/project/trunk svn commit -m "Trunk 모든 변경사항 병합"
Branches에서 기능추가 완료 후 Trunk 병합
svn update svn merge --reintegrate svn://localhost/project/branches/i18n svn commit -m "병합"
릴리즈 태그 만들기
svn update svn copy . svn://localhost/project/tags/REL_1.0.0 -m "R1.0.0 Tag 생성"
파일 잠금
#잠금기능 설정 svn propset svn:needs-lock yes docs/README.txt svn commit -m "편집하기 전에 잠그고 작업하세요." #잠금은 svn:needs-lock *|yes 로 설정한다. #잠금 설정후 커밋한다 이 후 update 시 읽기 전용으로 설정된다. #잠금은 우선순위가 있고 잠금사람만이 해제를 할 수 있지만, 강제 잠금 해제도 가능하다. #잠금 적용 svn update svn lock README.txt -m "현재 수정중" #점금 해제 svn unlock README.txt #강제 잠금해제 svn lock README.txt svn: warning: Path '/runkt/docs/README.txt' is already locked by user 'username' in filesystem '/home/svn/project/db' svn unlock --force README.txt 'README.txt' unlocked. #잠금 뺏어오기 svn lock README.txt svn: warning: Path '/runkt/docs/README.txt' is already locked by user 'username' in filesystem '/home/svn/project/db' svn lock --force README.txt 'README.txt' locked by user 'newusername'
에디터 에러
export SVN_EDITOR=/usr/bin/vim #or export EDITOR=/usr/bin/vim
반응형
'vcs > svn' 카테고리의 다른 글
CVS 를 Subversion으로 이동 svx2svn (0) | 2014.11.06 |
---|---|
Apache Subversion (0) | 2014.11.05 |
subversion (0) | 2012.07.11 |
svn: No repository found in svn://xxx.xxx.xxx.xxx/trunk (0) | 2010.11.02 |
subversion + eclipse (0) | 2010.07.15 |