转载自: http://wolfgangkiefer.blog.163.com/blog/static/862655032009101721627642/
一。 安装
svn服务器端依赖于apr/apr-util/sqlite,因此需要首先安装这三个库。
1. mkdir /home/xxx/soft
cd /home/xxx/soft
#apr
wget http://mirror.bjtu.edu.cn/apache//apr/apr-1.4.5.tar.gz
tar xzvf apr-1.4.5.tar.gz
cd apr-1.4.5
./configure --prefix=/usr/local/apr
make && make install
#apr-util
wget http://mirror.bjtu.edu.cn/apache//apr/apr-util-1.3.12.tar.gz
tar xzvf apr-util-1.3.12
cd apr-util-1.3.12
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
#sqlite
wget http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz
tar xzvf sqlite-autoconf-3070701.tar.gz
cd sqlite-autoconf-3070701
./configure --prefix=/usr/local/sqlite
#svn
wget http://subversion.tigris.org/downloads/subversion-1.6.17.tar.gz
tar xzvf subversion-1.6.17.tar.gz
cd subversion-1.6.17
./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-sqlite=/usr/local/sqlite
make && make install
通过上述步骤,svn基本就安装成功了,根据提示信息安装缺少的库文件。
2. 查看svn版本号
运行命令:
/usr/local/svn/bin/svnserve --version
如果svn安装成功,会返回svn的版本信息。
3. 运行svnserve:
/usr/local/svn/bin/svnserve -d
如果该命令执行成功,则可以使用netstat -ntlp查看服务端口,如果3690端口正在使用,则表示启动成功,停止该服务,执行kill pid即可。
4. 自动启动svnserve
vi /etc/rc.local
增加: /usr/local/svn/bin/svnserve -d
二。 服务器配置
1. 建立版本库目录,可建多个:
mkdir -p /opt/svndata/repos1
2.建立版本库:
svnadmin create /opt/svndata/repos1
3.修改版本库配置文件:
版本库1:
vi /opt/svndata/repos1/conf/svnserve.conf
内容修改为:
[general]
anon-access = none
auth-access = write
password-db = /opt/svn/conf/pwd.conf
authz-db = /opt/svn/conf/authz.conf
realm = repos1
4.配置允许访问的用户:
vi /opt/svn/conf/pwd.conf
为了简化配置,2个版本库共用1个用户配置文件。如有必要,也可以分开。
注意:对用户配置文件的修改立即生效,不必重启svn。
文件格式如下:
[users]
<用户1> = <密码1>
<用户2> = <密码2>
其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:
[users]
alan = password
king = hello
5.配置用户访问权限:
vi /opt/svn/conf/authz.conf
为了简化配置,3个版本库共用1个权限配置文件/opt/svn/conf/pwd.conf。如有必要,也可以分开。文件中定义用户组和版本库目录权限。
注意:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。
用户组格式:
[groups]
<用户组名> = <用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
其中,方框号内部分可以有多种写法:
/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。
repos1:/,表示对版本库1设置权限
repos2:/occi, ,表示对版本库2中的occi项目设置权限
repos2:/occi/aaa, ,表示对版本库2中的occi项目的aaa目录设置权限
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
示例:
[groups]
admin = alan
[/]
@admin = rw
[repos1:/occi/aaa]
king = rw
[repos2:/pass]
king =
删除无用文件:
rm /opt/svndata/repos1/conf/authz
rm /opt/svndata/repos1/conf/passwd
rm /opt/svndata/repos2/conf/authz
rm /opt/svndata/repos2/conf/passwd
权限的管理:
需要增加用户的话,只要在/opt/svn/conf下增加用户名和密码即可
u Svn版本库的自动同步处理:
l 源机:
要备份的版本库: /opt/svndata/project1
源机IP: **.**.2.87
l 目标机:
备份到目标机的版本库 /opt/svndata/backup
目标机IP: **.**.2.92
u 说明:在源机上的project1版本库修改后,自动将project1版本库备份到目标机的backup版本库中
u 处理步骤:
-------------------------------------
步骤 1 :首先是在目标机上建立普通的版本库,用来备份源机版本库:
# mkdir -p /opt/svndata/backup
# svnadmin create /opt/svndata/backup
-------------------------------------
步骤 2 :在目标机的backup下的hook下:
# cp pre_revprop-change.tmpl pre_revprop-change
将pre_revprop-change文件夹置空,并设置权限(重要):
# chmod 755 pre_revprop-change
-------------------------------------
步骤 3 :执行初始化(svnsync或要加全路径):
# svnsync init svn://localhost/backup svn://**.**.2.87/project1 --username **** -- password hello
注:源机管理员****,密码hello
执行完后会提示输入目标机和源机的用户名和密码,这个在conf文件中已经配置了。输入完成后会显示“复制版本***的属性”或者“***已经和***同步”,这代表初始化完成。
-------------------------------------
步骤 4 :执行同步的工作可以分为两种类型:
1.手动同步:
在目标机的终端输入:
# svnsync sync svn://localhost/backup
(svnsync sync 目标库)
执行后,如果目标库中有内容,就显示如下:
已提交版本一
复制版本一的属性
如果目标版本库中没有内容就不显,目标版本库中内容较多时会显示“正在传输……”
2.自动同步
在源库的hook文件夹下,拷贝post-commit.tmpl为post-commit:
# cp post-commit.tmp1 post-commit
替换post-commit最后两行为
svnsync sync --non-interactive svn://**.**.2.92/backup --username **** -- password ****
注:最后为目标机用户名和密码
设置权限为755(重要)
# chmod 755 post-commit
参考文档:
1. linux下SVN服务器端安装与使用
http://blog.163.com/ruihuadesunny@126/blog/static/39026191201122845947679/