安装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
原文地址:http://janan.blog.51cto.com/7466674/1569412