리눅스 svnserve

From CS Wiki
  • 상위 문서: SVN

리눅스에서 svn 설치 후 svn 서버를 관리하기 위한 프로그램이자 명령어

옵션[edit | edit source]

svnserve --help로 확인할 수 있다.

$ svnserve --help
usage: svnserve [-d | -i | -t | -X] [options]

Valid options:
  -d [--daemon]            : daemon mode
  -i [--inetd]             : inetd mode
  -t [--tunnel]            : tunnel mode
  -X [--listen-once]       : listen-once mode (useful for debugging)
  -r [--root] ARG          : root of directory to serve
  -R [--read-only]         : force read only, overriding repository config file
  --config-file ARG        : read configuration from file ARG
  --listen-port ARG        : listen port
                             [mode: daemon, listen-once]
  --listen-host ARG        : listen hostname or IP address
                             [mode: daemon, listen-once]
  -6 [--prefer-ipv6]       : prefer IPv6 when resolving the listen hostname
                             [IPv4 is preferred by default. Using IPv4 and IPv6
                             at the same time is not supported in daemon mode.
                             Use inetd mode or tunnel mode if you need this.]
  -c [--compression] ARG   : compression level to use for network transmissions
                             [0 .. no compression, 5 .. default, 
                              9 .. maximum compression]
  -M [--memory-cache-size] ARG : size of the extra in-memory cache in MB used to
                             minimize redundant operations.
                             Default is 128 for threaded and 16 for non-
                             threaded mode.
                             [used for FSFS repositories only]
  --cache-txdeltas ARG     : enable or disable caching of deltas between older
                             revisions.
                             Default is no.
                             [used for FSFS repositories only]
  --cache-fulltexts ARG    : enable or disable caching of file contents
                             Default is yes.
                             [used for FSFS repositories only]
  -T [--threads]           : use threads instead of fork [mode: daemon]
  --foreground             : run in foreground (useful for debugging)
                             [mode: daemon]
  --log-file ARG           : svnserve log file
  --pid-file ARG           : write server process ID to file ARG
                             [mode: daemon, listen-once]
  --tunnel-user ARG        : tunnel username (default is current uid's name)
                             [mode: tunnel]
  -h [--help]              : display this help
  --version                : show program version information
  -q [--quiet]             : no progress (only errors) to stderr

시작 방법[edit | edit source]

가장 일반적인 사용법은 아래와 같다.

svnserve -d -r /home/svn --listen-port 포트
  • -d: --daemon: 데몬 방식으로 실행을 시킨다는 의미이다.
  • -r: --root [디렉터리]: 루트 디렉터리를 지정하는 옵션이다.
  • --listen-port: 실행 포트를 지정한다. 입력하지 않으면 기본 포트인 3690으로 실행된다. 보안을 위해 임의의 포트로 변경하는 것이 권장된다.

종료 방법[edit | edit source]

서비스에 등록하지 않는 이상 별도의 종료 옵션은 제공하지 않는다. 그냥 pspid를 확인하고 kill하는 방법 밖에 없다.

프로세스 확인

$ ps -ef | grep svn | grep -v grep
root     22456 22408  0 13:13 pts/3    00:00:00 su svn
svn      22463 22456  0 13:13 pts/3    00:00:00 bash
svn      23075     1  0 13:18 ?        00:00:00 svnserve -d -r /home/svn

svn과 관련된 여러 프로세스가 보여질 수 있는데, 본인이 실행시킨 svnserve 명령어를 찾아야 한다. 여기선 가장 아래에 있는 프로세스이다.

$ kill 23075

이후 다시 ps -ef 를 통해 정상 종료되었는지 확인한다.

서비스 등록[edit | edit source]

다른 서비스처럼 $service subversion start/stop 으로도 사용할 수 있다. 매번 루트 디렉터리를 설정하고 포트를 지정하고, 종료할 때도 pid를 확인하여 kill을 하는 것 보단 이 방법이 권장된다. 파일 하나만 수정하면 된다.

/etc/sysconfig/svnserve 파일 확인

$ cat /etc/sysconfig/svnserve
# OPTIONS is used to pass command-line arguments to svnserve.
# 
# Specify the repository location in -r parameter:
OPTIONS="-r /var/svn"

/etc/sysconfig/svnserve 파일 수정 vi 등을 이용해서 저 OPTION 부분을 우리의 루트 디렉터리 및 포트로 수정한다.

OPTIONS="--threads -r /home/svn --listen-port 612345"

이렇게만 해두면 service 명령어를 이용해 제어 가능해진다.