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服务的配置相对较容易,这里只是最基本的使用,如需要深入了解,见参考中的网址。

在配置过程中遇到最多的可能是有写权限的用户会报"认证失败"错误,这个问题一般都是三个配置文件有写错的地方,仔细检查了。

 

七、参考

http://subversion.apache.org/

http://zh.wikipedia.org/zh-cn/Subversion

http://baike.baidu.com/view/183128.htm 

posted @ 2013-03-30 22:18  ArronGao  阅读(2859)  评论(0编辑  收藏  举报