Linux subversion服务配置

安装subversion
yum install subversion

安装之后,主要会用到三个命令,svn:这个是svn客户端;svnserve:svn服务端,启动后就可以通过svn命令获取和修改源文件;svnadmin:svn服务端的管理工具


创建仓库

mkdir -p /var/svn/repos

#创建文件夹

svnadmin create /var/svn/repos

#创建svn仓库

创建之后会在/var/svn/repos下产生如下文件

conf  db  format  hooks  locks  README.txt

conf是存放svn配置的地方

db是源码存放的地方,如果你进去找源码,这里是找不到的,因为svn使用的是自己的文件系统,虽然源码都放在这,但是我们是看不到的(把它想象成数据库吧,就像数据库文件我们也是无法直接读懂的),这两个是比较重要的,其他的有兴趣可以去了解。

还有一点要注意,svn是可以创建多个仓库的,你可以再创建一个仓库svnadmin create /var/svn/repos2


配置用户

vi /var/svn/repos/conf/passwd

用vi打开该文件,你会看到如下内容,格式是 ‘用户 = 密码‘,这个密码是明文的(#在linux中是代表注释)

[users]
# harry = harryssecret
# sally = sallyssecret

加上一个用户,例如

[users]
# harry = harryssecret
# sally = sallyssecret

jan = jan123


配置用户认证

vi /var/svn/repos/conf/authz

增加用户组,在[groups]增加一行,格式是‘用户组 = 用户1,用户2‘

[groups]

admin = jan

dev = jan

增加权限配置

[/]

@admin = rw

* = r

用户组admin的用户对根目录及子目录有读(r)写(w)权限,其他用户有读权限,‘@‘符合代表用户组的意思

[/]代表根目录,这个根目录是指仓库的根目录,即repos

服务端配置

vi /var/svn/repos/conf/svnserve.conf

找到这几行,去掉注释

# anon-access = read
# auth-access = write

# password-db = passwd

# authz-db = authz

# realm = My First Repository

如果anon-access = read,则表示不需要登录也有读权限,网上的开源项目一般不需要我们登录我们就可以把它checkout出来,就是设置这个;也可以改成anon-access = none,表示不登录没有权限,所以要登录后才能checkout

password-db = passwd使用的用户配置文件,代表用我们刚才编辑的那个用户文件(/var/svn/repos/conf/passwd)也可以设置成其他的

authz-db = authz使用的认证文件(/var/svn/repos/conf/authz),也可以设置成其他的

realm = /var/svn/repos,即我们创建的仓库的目录

启动svn服务

svnserve -d -r /var/svn/

-d代表以守护进程的方式运行

-r指定基目录

svn://localhost/repos这样就能访问了,但是我们的仓库下还是空的,所以你不会看到有东西

-r关系到svn地址的写法,这个要特别注意,如果没写对,checkout的时候会提示地址不存在

svnserve -d

对应地址为 svn://localhost/var/svn/repos

svnserve -d -r /var/

对应地址为 svn://localhost/svn/repos

svnserve -d -r /var/svn/

对应地址为 svn://localhost/repos

svnserve -d -r /var/svn/repos

对应地址为 svn://localhost/

如果本机可以checkout,其他机子不能,很可能是防火墙的问题,svn默认端口是3690,修改防火墙配置文件

vi /etc/sysconfig/iptables

增加如下一行

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEP

重启防火墙

service iptables restart


导入项目文件


[root@localhost svn]# mkdir -p tmp/projs/p1
[root@localhost svn]# mkdir -p tmp/projs/p1/trunk
[root@localhost svn]# mkdir -p tmp/projs/p1/branches
[root@localhost svn]# mkdir -p tmp/projs/p1/tags
[root@localhost svn]# mkdir -p tmp/projs/p2/trunk
[root@localhost svn]# mkdir -p tmp/projs/p2/branches
[root@localhost svn]# mkdir -p tmp/projs/p2/tags
[root@localhost svn]# svn import /var/svn/tmp/projs svn://localhost/repos -m ‘first import‘

导入之后就会有如下项目结构

svn://192.168.1.103/repos

svn://192.168.1.103/repos/p1

svn://192.168.1.103/repos/p1/trunk

svn://192.168.1.103/repos/p1/branches

svn://192.168.1.103/repos/p1/tags

svn://192.168.1.103/repos/p2

svn://192.168.1.103/repos/p2/trunk

svn://192.168.1.103/repos/p2/branches

svn://192.168.1.103/repos/p2/tags


多仓库支持

svn可以支持多仓库

svnadmin create /var/svn/repos

svnadmin create /var/svn/repos2

如果有多个仓库,svnserve -r 所指的目录应该包含所有的仓库,否则有些仓库会不能启动

svnserve -d -r /var/svn/repos

如果是这样启动的,那么repos2将访问不到

svnserve -d -r /var/svn/

这样的话两个仓库都可以启动

由于每个仓库都有各自的配置文件,这样管理起来就很麻烦,最好是把conf目录提取到/var/svn目录下,让repos1和repos2都使用统一的配置文件

本文出自 “一路向北” 博客,请务必保留此出处http://janan.blog.51cto.com/7466674/1569412

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。