发布于 2017-07-21 09:34:58 | 111 次阅读 | 评论: 0 | 来源: 网友投递
Apache Subversion 开源的版本控制系统
Subversion是一个自由,开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神奇的“时间机器”。
linux下搭建svn服务器的文章已经有很多了,这里仅记下自己最近使用的一些实践之谈,原理先不深究,供日后查阅用。
安装:yum install subversion -y
,可用rpm -ql subversion
查看svn的安装目录,默认在/usr/bin目录下
创建版本库:
mkdir /path/to/repo
svnadmin create /path/to/repo
创建好后目录下会有conf db format hooks locks README.txt这些个文件(夹),
其中conf是配置文件信息关系到登录账号的问题,hooks是钩子文件会在服务器端执行一些客户端对应动作的响应事件
配置用户/开发组信息
修改conf/passwd,直接在后面追加 username = passwd的字符串明文,这里的username是linux中存在的用户名,
修改conf/svnserve.conf
,注释掉那几行使之生效,
anon-access,auth-access,passwd-db,realm,
同时修改anon-access = none,
这样在客户端才可以有读日志文件的权限,方便查看不同版本的提交日志信息,
修改realm = /path/to/repo指定svn版本库目录。
到这里个人开发的一个简单配置就完成了,这时候用svnserve -d -r /path/to/repo
就可以启动svn进程然后就可以使用客户端来连接svn://ip:port/repo使用了,这里默认的端口是3690,
如果是想开多个svn版本库到别的目录,只需要重复以上步骤至启动时指定不同的端口号即可,
比如使用3691端口启动一个新的svn版本库:svnserve -d --listen-port 3691 -r /path/to/repo
这样在客户端连接的时候url是svn://ip:3691/repo
开发组配置
多user在同一个group开发代码,每个user去生成一个svn的版本库然后指向同一个代码目录这个是很繁琐而不符合规范的,
这个时候就用上了svn的成员组配置:
修改conf/authz文件,编辑:
# 添加 开发用户组groupName1
[groups]
groupName1= userName1[,userName2,userName3...]
# 添加开发组对代码目录的读写权限
[/path/to/repo]
@groupName1 = rw
这里的userName1,userName2的用户需是linux里的存在的用户,且对应的svn密码已经在conf/passwd中指定。
到这里就配置好一个组成员的配置了,经测试是ok的.
post-commit钩子配置
粗略的可以理解svn客户端将修改信息以一定格式传输到服务端保存在固定格式的文件里面,
svn up的时候再将这些文件里的信息生效到代码目录里。
我们有时候需要在服务端实时的看到代码更新信息,这就用到了post-commit钩子:
在客户端commit的时候触发服务端到/path/to/repo执行svn up来更新文件,
同时减少日志文件的大小,防止服务端当机后的日志损失。
到svn版本库配置信息目录,
cd hooks,
cp post-commit.tmpl post-commit
编辑post-commit:注释掉最后一行,添加
export LANG=en_US.UTF-8
/usr/bin/svn update --force /path/to/repo
到这里hook钩子就配置好了,重启svn进程,即可看到客户端commit后文件同步更新。
以上就是svn在centos下的简单使用实践,应对日常的开发需求已经足够。