728x90
형상관리 툴 SVN(subversion)
? 형상관리 툴(SVN, GIT) 사용시 충돌 해결책임은 사용자에게 있음.
충돌발생한 파일이 다른 사람과 공동작업으로인한 소스내용이 다를 경우, 협의가 필요하다.
이 부분에 대해 툴은 완벽하지 못해서 가끔 트러블이 발생.
기본용어
-
Repository 저장소
-
Working copy 보통 작업사본이라 불림, 서버로 부터 가져온 소스디렉토리
-
Commit 작업내용을 commit하면 서버의 소스 버젼이 1개 올라감
필수 명령어
svn checkout ## 작업사본 만들기, 곧 저장소의 소스를 가져오기
svn update ## 서버에 업데이트된 내용이 있으면 내 작업사본을 업데이트하기
svn commit ## 내가 고친 내용을 저장소에 반영하기
SVN 특징
ⓧ
중앙 집중형 관리방식으로 관리서버가 다운되면 작업이 중지되어야 하는 단점이 있음.
작업사본(Working Copy) 디렉토리에는 .svn 폴더가 존재.
SVN 설치
## wevdav 프로토콜을 이용 아파치와 연동시키기 위한 라이브러리도 미리 설치
$ sudo apt install subversion subversion-tools libapache2-mod-svn
## 잘 설치되었는가 확인
$ svn --version
## 잘 설치되었는가 한번 더 확인
$ svnadmin help
SVN 저장소(repository)만 생성
# sudo svnadmin create [저장소경로] ## --fs-type fsfs
저장소(repository)에 폴더 추가
$ sudo svn import [추가하고픈 경로] file:///[저장소경로]/고유ID -m [커밋메세지] ## file 다음에 /가 3개 주의
저장소(repository)에 추가한 폴더에 권한설정
! 저장소(위의 경우 /home/svn/teamproj) 에 가보면 conf 디렉토리의 svnserve.conf 파일과 passwd 파일 수정
local방식 checkout
$ svn checkout file:///[저장소경로]/고유ID [주고싶은 폴더명]
svnserve 사용 svn 서버 구동
$ sudo svnserve -d -r [저장소경로] ## -d는 데몬, -r은 server root 지정 옵션
svnserve 사용 checkout
$ svn checkout svn://도메인명/[svnserve 구동시 -r옵션 값 기준]/고유ID [주고싶은 폴더명]
update & commit
$ svn update $ svn commit -m "메세지"
특정버젼으로 되돌리기
$ svn update -r 버젼넘버
충돌 (conflict)
개발시 충돌 안나게 미리 파일및 작업분류를 잘 하는 것(정책결정)이 중요 충돌 발생시 선택사항
기본적으로 사용하게 되는 명령어
info
add
copy
delete
move
rename
status
log
diff
revert
resolve
export ## 버젼 history는빼고 소스만
♤
실제 사용은 svnserve 서버보다는 Apache + WebDav를 이용 http를 이용하여 많이 사용
설치만 잘되면 사용이 훨씬 편리
서버라는 것이 설치 설정만 한번 잘 되면 잊고 살아도 됨.(사용자 입장에선 그렇고,유지관리 책임자는 다름)