安装软件包:
sudo apt-get install subversion
之后选择SVN服务文件及配置文件的放置位置。我放在了/srv下的svn目录。
cd /srv
sudo mkdir svn
我的svn版本仓库叫pec_src
cd /srv/svn
sudo mkdir pec_src
目录建好后 创建版本仓库
sudo svnadmin create /srv/svn/pec_src
执行之后 pec_src下文件结构如下:
speech@ubuntu:/srv/svn/pec_src$ ls -l
总用量 24
drwxr-xr-x 2 root root 4096 1月 15 10:52 conf
drwxr-sr-x 6 root root 4096 1月 15 14:52 db
-r--r--r-- 1 root root 2 1月 15 10:50 format
drwxr-xr-x 2 root root 4096 1月 15 10:50 hooks
drwxr-xr-x 2 root root 4096 1月 15 10:50 locks
-rw-r--r-- 1 root root 246 1月 15 10:50 README.txt
下面进行配置:
我们需要修改conf目录下的三个文件,authz;passwd;svnserve.conf
注意:配置行前不要出现空格
编辑svnserve.conf
[general]
#匿名用户不可读
anon-access = none
#权限用户可写
auth-access = write
#密码文件为passwd
password-db = passwd
#权限文件为authz
authz-db = authz
编辑authz 制定管理员组 即admin组的用户为tone admin组有rw(读写权限) 所有人有r(读权限)
[groups]
admin= pec
#pec即为用户名,在此创建,后面设置密码
[/]
@admin =rw
#admin组内都是可读写用户
*=r
#其它所有用户都是可读
这里组的名字 不一定叫admin 你的管理员组名 可以叫做任意的名字,另外比如admin组还有其他用户,可以这样制定 admin=pec,wj,mln 类似这样的写法
编制passwd 文件 设定用户密码
[users]
# harry = harryssecret
# sally = sallyssecret
pec=www
用户pec的密码设置为www 对 没看错 明文的。
以上都做完之后,就可以开启你的svn服务器了。
sudo svnserve -d -r /srv/svn/
svnserve --listen-port 3690 -d -r /home/shiqin/svn/
默认3690,如果3690没有打开,需要打开3690端口,打开依然不行,则
[root@localhost svn]# /sbin/iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
[root@localhost svn]# /etc/init.d/iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]
[root@localhost svn]# service iptables restart
iptables:将链设置为政策 ACCEPT:filter mangle nat [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
iptables:应用防火墙规则: [确定]
-d 已守护模式启动
-r 制定svn版本库根目录 这样是便于客户端不用输入全路径 就可以访问版本库了
例如:svn checkout svn://ip/pec_Src /home/speech/ --username pec --password www
值得注意的是 我这里是用sudo 启动的 因为之前的svn目录 及pec_src目录 我都是在sudo下创建的。目录的所属权限都是root
如果我以 下面的方式启动 是可以的 但是当客户段提交文件的时候 会出问题,因为此时的svnserve 服务对svn版本库目录没有写的权限
svnserve -d -r /erv/svn/
推荐一个14.04 下的svn 客户端
$ sudo add-apt-repository ppa:rabbitvcs/ppa
$ sudo apt-get update
$ sudo apt-get install rabbitvcs-nautilus3
# Optional
$ sudo apt-get install rabbitvcs-gedit
$ sudo apt-get install rabbitvcs-cli
客户端访问:
检出:
svn checkout svn://ip/pec_Src /home/speech/ --username pec --password www
此处已经路径svn://ip/pec_Src 中已经省略掉了 /srv/svn/,直接用/pec_Src
提交:
svn import -m "New import" ./ svn://ip/pec_Src
SVN报错:can't open file db/txn-current-lock:permission denied 解决方法
其实这个问题是这样的。下面我举个例子:比如版本库SVN是root用户创建的但是启动服务的时候没有选择root启动,而是在其他用户转托管太下启动的,所以只能读不能写。
解决方法:停止svn服务:killall svnserve
在创建版本库的用户下启动svn : svnserve -d -r /opt/....(你版本库的路径)。
svn commit -m "pec" ./FrontEnd/
删除:
svn delete svn://9.186.100.29/TTS_Front_End_Src/debug.log -m "删除测试文件debug.log"