一、安装svn
1.本例在阿里云服务器centos 6.8 上安装
2.运行命令 yum install subversion
3.运行以下命令查看SVN安装版本 svnserve --version
出现以下效果
4.按以下步骤创建版本库:
a.运行以下命令创建目录 mkdir /var/svn
b.依次运行以下命令创建版本库
cd /var/svn
svnadmin create /var/svn/dzxsystem
c.依次运行以下命令查看自动生成的版本库文件
cd dzxsystem
ll
Subversion目录说明:
- db目录:所有版本控制的数据存放文件。
- hooks目录:放置hook脚本文件的目录。
- locks目录:用来追踪存取文件库的客户端。
- format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。
- conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)。
d.运行命令 cd conf/
进入conf目录(该SVN版本库配置文件)。返回结果如下:
- authz:是权限控制文件。
- passwd:是账号密码文件。
- svnserve.conf:SVN服务配置文件。
e.按以下步骤设置账号密码:
- 运行 vi passwd。
- 按 i 键进入编辑模式。
- 在 [users] 块中添加用户账号和密码,格式:账号=密码,比如示例中的suzhan = redhat(注意等号两端要有一个空格)。
- 按 Esc 键退出编辑模式,并输入 :wq 保存并退出 ,此图直接复制的阿里云安装svn图片
f.按以下步骤设置权限:
- 运行 vi authz。
- 按 i 键进入编辑模式。
- 在末尾添加如下代码(其中,r表示读,w表示写):
[/] suzhan=rw
- 按 Esc 键退出编辑模式,并输入 :wq 保存并退出。此图直接复制的阿里云安装svn图片
g.按以下步骤修改svnserve.conf文件。
-
运行命令
vi svnserve.conf
-
按
i
键进入编辑模式 -
打开以下几个注释(注意每行不能以空格开始,等号两端要有一个空格):
anon-access = read #匿名用户可读,您也可以设置 anon-access = none,不允许匿名用户访问。设置为 none,可以使日志日期正常显示 auth-access = write #授权用户可写 password-db = passwd #使用哪个文件作为账号文件 authz-db = authz #使用哪个文件作为权限文件 realm = /var/svn/svnrepos #认证空间名,版本库所在目录
-
按 Esc 键退出编辑模式,并输入 :wq 保存并退出。此图直接复制的阿里云安装svn图片
-
h.运行以下命令启动SVN版本库。
svnserve -d -r /var/svn/dzxsystem
i.运行命令 ps -ef |grep svn
查看SVN服务是否开启。
如果返回结果如下图所示,表示SVN服务已经开启。
j.停止svn命令 killall svnserve
5.添加安全组规则
SVN服务的默认端口为TCP 3690。添加安全组规则 放行TCP 3690端口
二、创建钩子同步到web项目中
1.linux服务器上项目检出到linux服务器上web项目目录
需满足条件:
a.svn版本库开启不能指定文件夹,例如我这里创建的版本库是 /var/svn/dzxsystem
启动svn的目录只需到/var/svn,输入以下命令
killall svnserve
svnserve -d -r /var/svn
b.检出到linux服务器上的web项目目录
方法1.在你需要检出的目录下,例如我这里是/www/web/dzxsystem/public_html
输入以下命令,可能会出现输入用户名和密码的过程,只需输入你在创建版本库dzxsystem的passwd文件输入的用户名和密码即可
cd /www/web/dzxsystem/public_html
svn checkout svn://47.105.175.112/dzxsystem/
方法2.在任意目录执行以下命令
svn co svn://ip/dzxsystem/ /www/web/dzxsystem/public_html/ --username 你的svn用户名 --password 你的svn用户密码
c.此时你在windows检出时一样,如下
2.创建钩子,进入 /var/svn/dzxsystem/hooks
目录,复制 post-commit.tmpl
文件为 post-commit
cp post-commit.tmpl post-commit
a.修改post-commit文件
vi post-commit
b.删除其他内容,输入以下内容
#!/bin/sh
exportLANG=en_US.UTF-8
REPOS="$1"
REV="$2"
TXN_NAME="$3"
SVN=/usr/bin/svn #这里配置的是svn安装bin目录下的svn文件
WEB=/www/web/dzxsystem/public_html #要更新的目录
$SVN update --username 你的svn用户名 --password 你的svn用户密码 $WEB --no-auth-cache
chown -R www:www $WEB
c.操作 Esc,输入 :wq
退出并保存
d.让post-commit有执行的权限,输入以下命令
chmod a+x post-commit
如果有问题再给文件权限
chmod 777 /var/svn/dzxsystem/hooks/post-commit
e.重启svn
killall svnserve
svnserve -d -r /var/svn
f.本地运行效果对比
1)线下目录
2)线上目录
3)线下创建文件提交测试
淘宝优惠券领取:http://tao.paetao.com/