Ubuntu配置svn备忘
一、安装环境
Ubuntu 11.10
二、安装svn
$ sudo apt-get install subversion
命令默认安装在/usr/bin/目录
三、创建仓库
1.确定svn仓库的根目录
这样以后再为项目添加仓库只要添加在这个目录下面就可以了。
$ sudo mkdir /var/svn
在选择目录时,一定要保证目录的所在磁盘空间足够大。
2.为项目test创建仓库
$ cd svn $ sudo svnadmin create test
可以查看一个生成的test仓库的目录结构,如下:
$ ll test/ drwxr-xr-x 6 root root 4096 Mar 30 21:21 ./ drwxr-xr-x 3 root root 4096 Mar 30 21:21 ../ drwxr-xr-x 2 root root 4096 Mar 30 21:21 conf/ drwxr-sr-x 6 root root 4096 Mar 30 21:21 db/ -r--r--r-- 1 root root 2 Mar 30 21:21 format drwxr-xr-x 2 root root 4096 Mar 30 21:21 hooks/ drwxr-xr-x 2 root root 4096 Mar 30 21:21 locks/ -rw-r--r-- 1 root root 229 Mar 30 21:21 README.txt
查看一下test/conf/目录的文件,这是我们主要配置的目录
$ ll test/conf/ drwxr-xr-x 2 root root 4096 Mar 30 21:21 ./ drwxr-xr-x 6 root root 4096 Mar 30 21:21 ../ -rw-r--r-- 1 root root 1080 Mar 30 21:21 authz -rw-r--r-- 1 root root 309 Mar 30 21:21 passwd -rw-r--r-- 1 root root 2279 Mar 30 21:21 svnserve.conf
svnserve.conf是test仓库主配置文件
passwd是密码文件,当前仓库下的所有用户都记录在这里
authz是权限文件,用于为passwd中的用户配置权限
四、配置test仓库
三个配置文件中都不允许出现中文字符,否则会出错误。
我们对test仓库配置的目标:
用户:developer(对仓库有写权限),tester(对仓库只有读权限),其它人员无权访问此仓库
1.配置svnserve.conf
anon-access = none auth-access = write password-db = passwd authz-db = authz realm = test
anon-access指匿名用户,这里给了none,即无任何权限
auth-access指有权限的用户,这里给了write,即可以写
以上两项的值可为:none,read和write
password-db和authz-db分别指仓库用户的密码文件和权限文件
如果你有多个仓库,且用户及权限都相同,可以这样做:
将passwd和authz文件放在一个目录中(例如:/var/svn/conf/),且修改每个仓库的svnserve.conf:
password-db = /var/svn/conf/passwd
authz-db = /var/svn/conf/authz
realm是仓库的唯一标识,所以确保每一个仓库的realm值不相同。
2.配置passwd
[users] developer = developer tester = tester
这里使用的是用户名和密码对
3.配置authz
[/] developer = rw tester = r
这里不使用组
到这里对test仓库的配置结束了,下面启动服务并测试
五、启动服务
$ sudo svnserve -d -r /var/svn
启动时指定的目录是仓库的上层目录。
如果你有多个svn仓库,且不在同一个目录下,可以启动多个svnserve,只要指定端口就好了,如下:
$ sudo svnserve -d -r /var/svn --listen-port 9999
六、使用svn
1.使用developer用户迁出代码
$ svn checkout svn://localhost/test dev --username developer
checkout的地址格式:svn://svnserver_ip/仓库名称
dev指迁出后的代码目录
查看一下迁出后的svn信息
$ cd dev $ svn info 路径: . URL: svn://localhost/test 版本库根: svn://localhost/test 版本库 UUID: 850157da-372b-492d-a43b-ed2eb1e3752f 版本: 0 节点种类: 目录 调度: 正常 最后修改的版本: 0 最后修改的时间: 2013-03-30 21:21:31 +0800 (Sat, 2013-03-30)
2.添加文件
$ cal >> cal.log $ svn add cal.log A cal.log $ svn commit -m 'add cal.log' 增加 cal.log 传输文件数据 . 提交后的版本为 1。
因为这里使用的是developer用户,所以有添加和修改权限
3.使用tester用户迁出代码
$ svn checkout svn://localhost/test test --username tester
4.使用tester用户修改cal.log文件,验证权限
$ svn commit -m 'update cal.log' svn: 提交失败(细节如下): svn: 认证失败
说明权限设置成功
5.更新代码
developer用户修改cal.log文件:
$ cat cal.log March 2013 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 $ cal >> cal.log $ svn commit -m 'update cal.log' 正在发送 cal.log 传输文件数据 . 提交后的版本为 2。
tester用户更新:
$ svn update 版本 2。 $ cat cal.log March 2013 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 March 2013 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
6.导入代码
如果你已经有代码了,可以使用import将代码导入到版本库
$ cd init/ $ ls init.log $ svn import svn://localhost/test --username developer 日志信息未修改,或未指定 a)终止,c)继续,e)编辑: c 认证领域: <svn://localhost:3690> test “dev1”的密码: 增加 init.log 提交后的版本为 3。
这样就导入成功了,可以在test中更新一下代码
$ cd ../test/ $ svn update A init.log 更新到版本 3。
当然,import最好在仓库初始化时使用,否则会引起代码覆盖等严重损失。
六、总结
svn服务的配置相对较容易,这里只是最基本的使用,如需要深入了解,见参考中的网址。
在配置过程中遇到最多的可能是有写权限的用户会报"认证失败"错误,这个问题一般都是三个配置文件有写错的地方,仔细检查了。