SVN은
한 프로젝트를 개발 할 때
여러 사람이 작업을 하게 되는데
이 때 사용하기 좋은 도구라고 한다
한 번 사용해 보려고 한당
(개발을 하고 있지는 않지만 사용법은 알고 있으려고..)
설치는 간단하당..
apt-get update && apt-get install subversion
svn 을 관리할 사용자를 만들어주었다
useradd -m svn (Kali 에서는 -m 옵션을 주어야 홈 디렉터리를 생성한당)
passwd svn
(패스워드 설정)
cd ~svn (svn의 홈 디렉터리로 이동)
pwd (현재 디렉터리 확인)
svnadmin create /home/svn/test
(test 라는 repository 생성!?)
cd ~svn/test
ls -al
cd conf
ls -al
이제 svn을 사용하기 위해 설정 파일을 수정해보자
먼저 svnserve.conf 를 열어보자
vim svnserve.conf
[general] 부분을 보면
거의 전부 주석되어있다
anon-access = read 로 되어있는데 익명 사용자에게는 권한을 주지 말도록하자
anon-access = none
그리고 auth-access = write 로 되어있는데 인증한 사용자에게는 쓰기 권한을 주는 설정이다
password-db = passwd 부분은 아까 passwd 파일명을 보았을 거다
password-db를 passwd 로 사용하겠다는 설정이다
realm = My Project
이건 Client 사용자 들에게 보여지는 프로젝트 명이라고 해야하나 그런 느낌의 설정인듯 하다..;
svnserve.conf 설정이 끝났으면
passwd 파일을 수정하자
vim passwd
[users] 라는 부분이 있는데
svn 사용할 사용자와 패스워드를 넣어 주면 된다
여기서는 svn = qwer1234 라고 추가하였다
'=' 앞 부분이 ID 이고 뒷 부분이 password 이다
이제 svn 데몬을 실행해 보자
svnserve -d -r /home/svn
(-d 옵션은 데몬을 의미 -r 옵션은 repository 경로 지정)
제대로 실행이 되었나 확인해 보자
pa aux | grep svn
netstat -nltpu | grep 3690
위의 결과가 나오면 제대로 실행 된 것이다
이제 저장할 곳을 만들자
svn mkdir svn://localhost/test/AA
그럼 아래와 같은 vim 화면으로 들어가지는데
로그 메시지를 추가 할 수 있는 모양이다
추가 하지 않고 나오면 아래와 같은 메시지가 나오지만 C를 입력하여 계속한다
하지만 Password for 'login' GNOME keyring: 이라고 나오고
svn: GNOME Keyring is locked and are non-interactive 라면서 안 된다
이럴때는 아래의 위치로 이동하여 설정을 변경해야 한다
vim /root/.subversion/config
[auth] 부분에 password-stores = gnome-keyring, kwallet 라는 부분에 주석이 있는지 확인하고
아래와 같이 password-stores = 을 추가해 준다
그리고 조금 아래 쪽에 store-passwords = no 라는 부분에 주석을 제거해 주자
이 파일과 같은 파일이 /etc/subversion/config 파일이다
이 파일도 위의 파일과 마찬가지로 수정해 주자
수정이 끝났으면 다시 시도해 보자
svn mkdir svn://localhost/test/AA
여기서는 로그 메시지를 추가하지 않겠다
C를 입력하면
아래와 같이 자신의 root 패스워드를 묻고
svn의 사용자 명과 암호를 물어본다
svn의 사용자 명과 암호는 passwd에 [user]에 등록한 사용자와 패스워드를 입력하면 될 거 같다
이제 성공적으로 test/AA를 생성 하였다
이제 test/AA에 내가 가지고 있던 소스(/root/AA/) 를 import 해 보자
svn import /root/AA svn://localhost/test/AA
또 로그 메시지.. 안 씀..!!
C 누르고
svn 사용자의 패스워드를 입력하면 test/AA에 /root/AA에 있던 소스코드들이 추가 된다
한 번 확인해 보자
svn list svn://localhost/test/AA
역시 마찬가지로 svn 사용자 패스워드 입력을 해야 목록도 볼 수 있다
이제 서버의 설정은 끝났다
이제 Client에서 설정을 해보자
Client도 svn을 설치하려면
apt-get update && apt-get install subversion
명령어를 사용하자..
Client 에서는 해 줄 것이 svn editor에 대한 환경 변수를 추가해 주는 것 뿐이다
vim ~/.profile
(굳이 ~/.profile 에 추가하는 이유는 재부팅 시에도 자동으로 환경 변수를 등록시키기 위해서이당)
아래 쪽에 export SVN_EDITOR="/usr/bin/vim"
(vim이 없다면 vi)
이제 환변 변수를 적용시키지
. /root/.profile
또는
source /root/.profile
(모자이크는 그냥 필요없는 내용이라 지운거에염..)
제대로 등록 되었나 확인
set | grep SVN_EDITOR
이제 Client 입장에서 svn을 이용해 보자
mkdir ../BB
cd ../BB
ls
(비어있다)
svn co svn://localhost/test/AA /root/BB
(co 는 checkout 을 의미)
svn 사용자 암호를 입력하면 test/AA에 있는 소스코드를 받아오는것을 볼 수 있다
아래는 ls 명령어로 확인 해본 결과
ls
svn 서버에 다른 사용자가 소스코드를 변경하고 저장하였을 경우도 있을 것이다
그럴 때 svn up common.h 명령어를 이용하여
(up은 update를 의미)
수정된 파일을 받아온 다음
작업을 하면 될 거같다
svn up common.h
또 test/AA에 없는 새로운 소스코드를 올려야 할 때가 있을 지 모르니
올려보자
touch new.c
echo "test file" > new.c
cat new.c
svn add new.c
(아직 추가는 안되어있음)
list 로 확인해보면..
svn list svn://localhost/test/AA
아직 new.c 파일은 보이지 않는다
아래 명령어를 이용하여 커밋까지 해야 list로 확인 시 new.c가 올라가 있는 것을 확인할 수 있다
svn commit -m "new file"
(-m 옵션은 로그 메시지 추가)
사용 방법은 여기까지만.......하고
이제 svn 서버를 종료하는 방법과
재부팅시 자동으로 svn 서버가 실행되도록 해보자
killall svnserve
pa aux | grep svn
netstat -ntlpu | grep 3690
위의 결과처럼 아무것도 나오지 않으면 제대로 종료 된 것이당
이제 부팅시 svn 서버가 실행되도록 하려면..
vim /etc/rc.local 파일을 열어서
/usr/bin/svnserve -d -r /home/svn 을 exit 0 위에 추가해 주면 된다
한 번 재부팅 해 보았다
그리고 ps aux | grep svn 과 netstat -nltpu | grep 3690 으로 확인 결과 제대로 실행 되었다는걸 알 수 있다
그리고 아까 추가한 export SVN_EDITOR도 재부팅을 하여도 제대로 환경 변수에 등록되어 있는걸 확인할 수 있다
아래 스크린샷은 재부팅후 바로 checkout 사용해 본 결과
이제 SVN 포스팅은 끝이당..
svn을 설치하고 간단하게 사용해 보긴 했지만...
검색해서 들어오신 분들은 아마 원하는 결과를 찾지는 못하셧을거 같다 ㅠㅠㅋㅋ
그래도 나는 왠지 어려웠던 SVN과 조금은 친해진거같다;;ㅋㅋ
언제 사용할 일이 있을지는 ... 모르겠지만......ㅋㅋ