본문 바로가기
인프라/리눅스

[centos7] svn 구축 및 활용

by IT맥구리나스 2022. 6. 11.

cenots7에는 기본적으로 svn이 설치 되어있음

# rpm -qa | grep subversion
subversion-libs-1.7.14-16.el7.x86_64
subversion-1.7.14-16.el7.x86_64

 

구축방법

## svn repo폴더 설정
vi /etc/sysconfig/svnserve

OPTIONS="--threads --root /svn"

## svn repo 폴더 생성
mkdir /svn

##svn 서비스 재시작
systemctl restart svnserve.service 

## repo 저장소 생성(명령어 수행시 test폴더와 svn관련 폴더/파일 생성됨)
svnadmin create --fs-type fsfs /svn/test

## svnserve.conf 수정([general] 쪽에 아래 코드 삽입)
cd /svn/test/conf
vi svnserve.conf

[general]

#익명 접근의 권한은 none 없음
anon-access = none
#인증 접근의 권한은 write 읽기/쓰기
auth-access = write
#사용자 패스워드 저장 파일 위치
password-db = passwd
#프로젝트 명칭
realm = My_First_Repository
#인증 접근의 권한 설정 파일 위치
authz-db = authz

## svn 접속계정 생성(passwd에 [users]아래 코드 추가)
vi passwd

admin = password123

## 권한추가(authz에 아래 코드 추가)
vi authz

[/]
* = r
root = rw
admin = rw


## 서비스 재시작
systemctl restart svnserve.service

 

 

확인방법

최초 접속시 아래와 같이 출력됨, svn/test 저장소내 아무것도 업로드 되어있지 않기때문에 그냥 프롬프트가 떨어진다.

[TEST][00:30:01][root@localhost /svn/test/conf] 
# svn list svn://127.0.0.1/test
Authentication realm: <svn://127.0.0.1:3690> My_First_Repository
Password for 'root': 
Authentication realm: <svn://127.0.0.1:3690> My_First_Repository
Username: admin
Password for 'admin': 

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <svn://127.0.0.1:3690> My_First_Repository

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
[TEST][00:35:06][root@localhost /svn/test/conf] 
# svn list svn://127.0.0.1/test
[TEST][00:35:09][root@localhost /svn/test/conf]

 

svn저장소(test) 파일 업로드

- /data/testseo폴더에 있는 파일들을 svn에 업로드 하고자 함 svn import로 업로드를 시킨다.

[TEST][02:30:29][root@localhost /data/seotest] 
# svn import /data/seotest svn://127.0.0.1/test -m "test"



## 위와 같은 에러 발생시 아래 명령어 입력 후 다시 수행
svn: E205007: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options
svn: E205007: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and no 'editor-cmd' run-time configuration option was found


export SVN_EDITOR=vi

svn import하면 아래와 같이 추가되었다고 나옴

svn저장소(test)의 파일 업데이트

1.txt파일을 업데이트 후 svn에 있는 1.txt파일도 업데이트 하고자 한다.

touch 명령어로 생성해서 0byte이다.

업데이트 후 용량이 좀 늘었다.

커밋을 시도하자 아래와 같은 에러가 나온다.

[TEST][02:42:45][root@localhost /data/seotest] 
# svn commit 1.txt -m "dd"
svn: E155007: '/data/seotest/1.txt' is not a working copy

 

그렇다면 일단 svn에서 저장소 파일을 받고 수정하여 다시 업로드를 수행해보았다.

다운로드 방법은 svn checkout svn://주소/저장소 이다.

[TEST][02:42:45][root@localhost /data/seotest] 
# svn commit 1.txt -m "dd"
svn: E155007: '/data/seotest/1.txt' is not a working copy

 

정상적으로 커밋된 결과

위와 같이 알수 있는 사실은 먼저 체크아웃으로 저장소 폴더내 파일을 받고 거기서 수정 및 commit을 해주어야 한다는 것이다.

 

 

 

에러내역

- 아래 내역 발생시 위 설정내역을 다시한번 체크해볼 것, 결국엔 설정 오류 문제

# svn list svn://127.0.0.1/test
svn: E200002: Unable to connect to a repository at URL 'svn://127.0.0.1/test'
svn: E200002: /svn/test/conf/svnserve.conf:9: Section header expected
반응형

댓글