SVN
- Subversion의 약자
- 소스 코드의 버전 관리 시스템
🌱 SVN 장점과 단점
장점
- SVN은 로컬 PC에서 commit을 하면 바로 중앙저장소에 반영이 된다
-> 모든 사람이 중앙서버에 있는 같은 자료를 받아오고 내가 commit을 하는 순간 모든 사람에게 공유가 된다
단점
- 두 사람이 하나의 파일을 동시에 수정하고 커밋했을 때 충돌이 일어날 확률이 높다
🌱 SVN 사용 흐름
- 최초로 서버 소스를 checkout 한다
- 소스를 수정한다
- commit할 파일을 add 한다
- update를 통해서 저장소에 새로운 파일이 없는지 확인한다
- update 과정에서 conflict가 일어나면 이를 해결한다 (수정 후, resolve 해주어야 함)
- commit을 해서 저장소에 파일을 등록한다
repository (저장소)
- 프로젝트의 파일 및 변경 정보가 저장되는 장소
trunk
- 메인 개발 소스
- 개발 소스를 commit 했을 때 개발 소스가 모이는 곳
- git에서의 master branch
branch
- trunk에서 분기된 개발 소스
- 실험적인 기능을 추가하거나, 출시를 위한 안정화 버전 작업을 할 때
tag
- 특정 시점에서 프로젝트의 스냅샷을 찍어두는 것
- branch와 tag는 사실 동일하지만, tag는 관례적으로 더 이상 개발하지 않고 어떤 버전으로 딱 얼려두는 것
- tagging 하는 것도 revision으로 기록된다
🌱 SVN 명령어
checkout
- 원격 저장소에서 최신 버전의 소스코드를 최초로 받아오는 것
- git clone
# sandbox 디렉토리에 체크아웃받음
svn checkout[co] svn://127.0.0.1/TestRepo1
# source 디렉토리에 체크아웃받음
svn checkout[co] svn://127.0.0.1/TestRepo1 LocalRepo1
import
- 아무것도 들어있지 않은 원격 저장소에 처음으로 파일을 업로드 할 때 한번만 사용
svn import sampledir svn://127.0.0.1/TestRepo1/trunk
export
- 버전 관리 파일들을 뺀 순수한 파일들만 빼내는 것
svn export svn://127.0.0.1/TestRepo1
update
- 로컬 저장소에 있는 파일들을 원격 저장소의 최신 버전으로 받아오는 것 (다운로드)
- git pull
svn update[up]
#현재 작업 내용을 리비전 1로 갱신(최신 리비전보다 이전으로 되돌리는 것도 가능)
svn update[up] -r 1
add
- 버전 관리 대상으로 파일을 등록하는 것 (업로드)
- 저장소에 저장은 되지 않음 (add 후 commit 해야 적용된다)
- git add
svn add main.c
commit
- 로컬 저장소의 변경된 내용을 서버로 전송하는 것
- revision 수가 올라간다
- commit 전에는 update를 실행해 최신소스로 변경하고, 컴파일이 성공했을 경우에만 커밋을 해야 한다
- git commit + git push
svn commit[ci] -m "수정사항에 대한 메시지 입력"
status
- 로컬 저장소에서 변경된 이후 아직 저장소로 commit 되지 않은 내용을 확인
- A: 추가됨 / C: 충돌됨 / D : 삭제됨 / M : 수정됨 / G : 병합됨
- git status
svn status[stat, st] main.c
revert
- 로컬 저장소의 내용을 이전 상태로 되돌리는 것
- 변경 취소
- git checkout / git reset
⚠️ SVN의 revert는 변경 취소이지만 Git의 revert는 삭제 용 커밋으로서 같은 명령어라도 의미가 서로 다르다
#로컬 저장소 복사본 main.c에 가했던 변경들을 모두 취소함
svn revert main.c
diff
svn diff[di]
#저장소의 내용과 현재 작업 내용 중 main.c 파일이 차이를 확인
svn diff[di] main.c
#리비전 1과 2의 차이를 확인
svn diff[di] -r 1:2
#리비전 1과 현재 작업중인 main.c의 차이를 확인
svn diff[di] -r 1 main.c
#리비전 2와 현재 작업중인 디렉토리의 파일내용 차이를 확인
svn diff[di] -r 2
log
svn log
#리비전 4의 변경사항 로그 보기
svn log -r 4
#리비전 4의 test.c 파일의 변경사항 로그 보기
svn log -r 4 test.c
#리비전 4 ~ 5의 변경사항 로그 보기
svn log -r 4:5
switch
svn switch[sw] --relocate [이전주소] [새로운주소]
출처
https://dzzienki.tistory.com/46
https://hellowoori.tistory.com/57
https://backlog.com/git-tutorial/kr/reference/git-svn.html