为了避免麻烦,首先获取root权限
sudo -sH
安装Subversion
sudo apt-get install subversion
新建存储仓库
svnadmin create /home/svn
在做文件配置之前,建议先赋予/home/svn文件夹完全读写权限
sudo chmod -R 777 */*
下一步做文件配置,首先是/home/svn/conf
修改:
anon-access = read
auth-access = write
password-db = passwd
anon-access 和 auth-access 分别指定匿名和有权限用户的权限,默认给匿名用户只读的权限,如果想拒绝匿名用户的访问,只需把 read 改成 none 就能达到目的。password-db 后的 passwd 则为定义用户名及密码的文件路径。这个文件默认跟 snvserve.conf 在同一个目录。
记住,去掉上述每一句前面的 # ,并且让其顶格
然后是在pwd文件中添加
svnuser = password
ly = 123456
然后是配置authz,配置信息如下:
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
group_admin = ly
# [/foo/bar]
# harry = rw
# &joe = r
# * =
[/]
ly = rw
* =
配置完成以后,就可以导入版本库了
我现在要把/home/paolo/a22source下的内容导入到版本库中:
sudo svn import -m "第一次导入" /home/paolo/a22source file:///home/svn
最后显示:提交后的版本为 1
下面进入搭建SVN服务器:
停止Subversion服务器:
killall svnserve
启动Subversion服务器:
sudo /usr/bin/svnserve -d -r /home/svn/ --listen-host 192.168.6.174
其中-d表示在后台运行,-r指定服务器的根目录,这样访问服务器时就可以直接用svn://服务器ip来访问了。如果服务器有多ip的话--listen-host来指定监听的ip地址. 一般情况下没有,则无须指定,即默认为localhost。
对于多个代码仓库,我们在启动时也可以用-r选项来指定服务器根目录,但访问时需要写上每个仓库相对于svn根目录的相对路径.
比如,我们有两个代码仓库/home/repo1 和/home/repo2,我们用svnserve -d -r /home --listen-host 192.168.1.16来启动,那么在客户端访问时可以用svn://192.168.1.16/repo1和svn: //192.168.1.16/repo2来分别访问两个项目
完成以后,可以用命令或者客户端测试服务器是否搭建成功。我用的是RapidSVN客户端,右键点击书签,“签出新的工作副本”,URI:svn://192.168.6.174,目标目录:/home/paolo/a22svn
友情提醒:
可以用xinetd来启动svnserve的守护进程。
先安装xinetd
sudo apt-get install xinetd
在/etc/xinetd.d/下面新建svn文件
( 由于/etc/xinetd.d/下的目录是只读的,所以需要用命令来完成新建和读写,
新建文件:
sudo touch /etc/xinetd.d/svn
编辑文件:
sudo gedit /etc/xinetd.d/svn
)
文件内容如下:
service svn
{
disable = no
port = 3690
socket_type = stream
protocol = tcp
wait = no
user = svn
server = /usr/bin/svnserve
server_args = -i -r /home/svn
}
最后,重启xinetd /etc/init.d/xinetd restart