SVN 간단히 사용하기

페이지 정보

작성자 조희승 댓글 0건 조회 11,310회 작성일 12-08-17 15:23

본문

그냥 간단하게.......
svnserve -d -r /svn/
svnadmin create --fs-type fsfs /svn/test
svn import sampledir svn+ssh://localhost/svn/test -m a
svn co svn+ssh://localhost/svn/test
snv commit -m a
--------------------------------------------
페도라 코어 아무거나 써도
SVN은 있다..
그러니 설치에 걱정할 필요 없다..
만약 없을땐..
yum install svn
하면 지들이 알아서 다한다.

os는 Linux를 사용하며 ssh접근을 하여 구축하겠습니다.

svn서버구동
svnserve -d -r /home/svn/

svn+ssh 방식으로

# mkdir /home/svn
# cd /home/svn
리눅스 파일시스템을 이용해 저장소를 만든다. 버클리 디비는 안쓰는게 좋지 않을까한다.
# svnadmin create --fs-type fsfs sample
svn에 올릴때 메시지를 남기게 되는데 그때 어떤 편집기를 사용할 것인지 선택하는데 vim쓰는게 좋겠다.

# vi ~/.bash_profile
SVN_EDITOR=/usr/bin/vim
export SVN_EDITOR
-F txt 를 주면 comment 작성 없이 바로 넘어간다.

환경 변수를 적용한다. 이거 안하면 SVN쓸때 이상한 소리 합니다.
# source ~/.bash_profile

trunk, branches, tags는 기본으로 들어가야하는 구조가 되겠다. SVN관리자 맘이겠지만 기본 구조가 아래와 같다.
# svn mkdir svn+ssh://(Subversion서버 IP또는 도메인)/home/svn/sample/trunk
# svn mkdir svn+ssh://(Subversion서버 IP또는 도메인)/home/svn/sample/branches
# svn mkdir svn+ssh://(Subversion서버 IP또는 도메인)/home/svn/sample/tags

이제 프로젝트에 만든 소스를 올려 보겠다. CVS쓸때 생각하면 이런 기능은 좋은것 같다. 한거번에 올라가니 말이다.

# mkdir sampledir
# cd sampledir
# vi sample.c
#include <stdio.h>

int main()
{
printf("Sample Program Version 0.1\n");
return 0;
}

이렇게 만들었다면 한번 올려 보자.
# cd ..
# svn import sampledir snv+ssh://(Subversion 서버의 IP주소 또는 도메인)/home/svn/sample/trunk

잘 올라 갔는지 확인해 보자.
# svn list snv+ssh://(Subversion 서버의 IP주소 또는 도메인)/home/svn/sample/trunk/sample.c
이렇게 하면 기본 프로젝트가 올라갔다 그러면 이제 개발자가 다루어야 하는 명령들을 알아 보자.

위의 프로젝트에 신입사원이 들어 왔다 리눅스 계정을 줄것이다. 아마도 보안상 ssh로 접속하도록 제한을 둘것이다 왜냐하면 svn에 접속하려면 ssh를 사용해야 하기 때문이다.. ㅋㅋ

그럼 신입 사원이 처음 해야 할것은 프로젝트를 내려 받아야 할것이다.
자신의 홈 계정에서(/home/xxxx)

# svn checkout svn+ssh://(Subversion 서버의 IP주소 또는 도메인)/home/svn/sample/trunk
다운 받았다면 다음 작업을 해보자....
근데.. 암호를 물어보죠... 초보 개발자라면.. 당황하기 쉽다.... 계정 암호를 넣으면 됩니다.

다 받았다면.. 이제 개발을 하도록 하죠...ㅋㅋ
.
.
.
.
sample.c파일의 버그를 정했습니다.
수정에 만족 한다면 올려야 겠죠...
수정한 파일의 위치로 가서

# svn commit

그러면 vi창이 뜨면서 수정된 내용을 적는다.
그런수 저장하고 나가면... 비번을 묻고 마무리가 되겠죠...
근데 여기서 하나 알아둘점은... 지금은 파일이 하나기때문에
svn commit 만하면 한개의 파일이 올라가지만 파일이 여러개라면 여러 파일에 대한 하나의 메시지만 남긴다. 이것은 개발자가 알아서 하기 바란다.
파일 하나당 각각 로그를 남기려면 svn commit "파일명" 이렇게 하면 됩니다.
개인적인 취향은 조금 무식하지만. SVN에서 체크아웃후 컴파일했을때 컴파일이 안되면 범인을 잡아 족쳐야 하기 때문에 신중하게 올리지만 어떤 파일을 수정했는지 모르면 diff를 통해 전체를 비교 한다.
그리고 메모장에 파일별로 어떤 내용을 수정했는지 따로 적어둔 다음에 최상위 루트에서
svn commit를 사용해 변경된 내용을 모두 올린다. 파일단위로 올리면 어떤 사람들은 중요 파일을 올리지 않아 SVN을 checkout해서 빌드 했을때 빌드를 깨는 경우가 생긴다. 이경우 엄청짜증난다. 깬놈이 상사라면 참고 아랫사람이라면... 정신 바짝들게 알려줘야 할것이다.ㅋㅋ
지금까지는 여담이다.ㅋㅋ

이런식으로 작업을 해나가면 로그가 많이 쌓일 것이고 쌓인 로그는
# svn log 또는
# svn lon "파일명"
이런 식으로 확인한다.. 하지만 보기 짜증납니다....ㅋㅋ

그리고 가장 중요한 명령어를 얘기하자면... svn up 명령이다.
최신 저장소에 있는 내용을 업데이트 받겠다는 내용인데..
다수가 작업시 한개의 파일을 작업하는 경우가 생기는데...
이때... 같은 부분을 손보게 되면 충돌이 나겠죠..
충돌이 나면 이제 모여서 지울것은 지우고 살릴것은 살리고 합의를 봐야 할것입니다.
개발자간의 대화의 시간이죠.... ㅡㅡ;;;; 난감합니다..ㅋㅋ
겁먹지 마세요... 소스안에 구분자가 구분을 져줘서...
어떤부분이 어떻게 변했는지를 알려 줍니다.
합의가 끝나면 commit을 통해 깔끔하게 병합이 되겠죠..ㅋㅋ

잘 모르겠다면 svn commit을 하기 전에 svn up를 통해 갱신을 하신후에..
하세요..
음... 이렇게 한다면.. 초보 개발자가 열심히.. 일할수 있겠죠..ㅋㅋ
그런데 어느날 갑자기... 소스를 잘못 올리게 되는 날이 옵니다.
이럴땐... 로그를 확인하고 언제쩍 리비젼 넘버가 문제 없는 지 확인후 뒤로 돌려야 합니다.
이럴땐......

현재 리비젼 넘버가 5라면 2일때로 돌아가려면....
# svn up -r 2
이렇게 하면 됩니다.ㅋㅋ

그리고 작업하다가 헤더 파일을 추가해야할 사항이 꼭 생깁니다. 간단히 말해 새로운 파일을 추가해보죠...
항상 파일이 생성되어 있는 경로로 가서 작업 해야죠...
# svn add test.h
# svn commit
파일을 추가하고 commit하면 깔끔하게 올라가겠죠...ㅋㅋ

branche, tag는 나중에 작성하겠습니다. 왜냐하면.. 안써봐서요...ㅋㅋ
그리고.. 콘솔로 이렇게 작업하면... 짱납니다...
텍스트만 나오고 모양도 이쁘지 않아서요...
그리니..
GUI툴을 사용하여 쓰시면 편합니다....
팁으로 samba로 연결하여 윈도우에서 하드 처럼 접근해서 사용하면...
좋습니다.. 하지만 단점은... 위도우용 툴은... linux 시스템인지 모르고 진행이 되므로 대소문자 구분이 안되는 경우도 생기고 리눅스 고유의 특성을 타는 symbolic link 같은 경우 문제가 생길 수 있습니다. 그러니 주의 하세요..ㅋㅋ

댓글목록

등록된 댓글이 없습니다.