一、概述:
Subversion(SVN)是一个开源的版本控制系统,也就是说 Subversion 管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository) 。
二、一些概念:
repository(源代码库):源代码统一存放的地方
Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份
Commit(提交):当你已经修改了代码,你就需要Commit到repository
Update (更新):当你已经Checkout了一份源代码, Update一下你就可以和Repository 上的源代码同步,你手上的代码就会有最新的变更
三、安装
1. 环境
centos7
2. 安装
> yum install subversion (有些代码加了 -y 的参数,它的意思表示:对所有的提问都回答"yes")
3. 查看版本
> svnserve --version
4. 创建版本库
先建目录
> mkdir /var/svn
创建版本库
> cd /var/svn
> svnadmin create /var/svn/svnrepos
> cd svnrepos 会看到自动生成的版本库文件
conf db format hooks locks README.txt
版本库文件说明
db目录:就是所有版本控制的数据存放文件
hooks目录:放置hook脚本文件的目录
locks目录:用来放置subversion锁定数据的目录,用来追踪存取文件库的客户端
format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号
conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)
进入conf文件夹会看到三个配置文件
vim passwd
设置账号密码 在[users]块中添加用户和密码,格式:账号=密码,如 test=123456
vim authz
设置权限 在尾部添加 [/] test=rw (r:读 w:写)
vim svnserve.conf
按i进入编辑模式
打开下面的几个注释:
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/svnrepos # 认证空间名,版本库所在目录
按esc退出编辑模式 输入:wq保存退出
5. 启动/停止版本库
svnserve -d -r /var/svn/
用ps查看启动状态
ps -ef | grep svn
停止版本库
killall svnserve
6. 实现svn与web同步
1)设置web服务器根目录/home/www
2)checkout一份到web服务器根目录
svn co svn://localhost/svnrepos /home/www
修改web用户权限
chown -R root:root /home/www
3)建立同步脚本
cd /var/svn/svnrepos/hooks/
cp post-commit.tmpl post-commit
编辑post-commit,在文件末尾加上以下内容
export LANG=zh_US.UTF-8 svn update /home/www –username test –password 123456 --no-auth-cache chown -R root:root /home/www
增加脚本执行权限
chmod +x post-commit
四、安装好之后进行测试
启动SVN客户端
输入svn://公网IP/svnrepos checkout你可能会发现连接失败
如果是使用阿里云的服务器,需要在安全组设置添加3690的端口