安装步骤如下
1.安装
sudo yum install subversion
查看安装位置
sudo rpm -ql subversion
2.创建版本库
sudo mkdir -p /var/svn
sudo svnadmin create /var/svn/qqtest
3.配置
进入conf目录(该svn版本库配置文件)
- authz文件是权限控制文件
- passwd是帐号密码文件
- svnserve.conf SVN服务配置文件
cd 到项目目录中 查看是否有如下文件夹 ll
- 服务svnserve.conf,进入
conf
目录 -
vi svnserve.conf
打开下图 红色标记区注释就行了 不需要过多修改 网上其他的教程有很多修改了其中的东西 我也试过几次 会有意想不到的错误 默认的就是最好的
anon-access =
read
#匿名用户可读
auth-access = write
#授权用户可写
password-db =
passwd
#使用哪个文件作为账号文件
authz-db = authz
#使用哪个文件作为权限文件
realm = /var/svn/qqtest
# 认证空间名,版本库所在目录,和之前的一样
- 用户密码 passwd 配置,新增用户的用户名和密码
格式:用户名 = 密码
qq = qqtest
qq2 = qqtest2
- 权限控制 authz 配置,设置[/]代表根目录下所有的资源
- rw 表示有读写的权利
admin = qq,qq2
[/]
@admin = rw
- 启动 svn 服务器
sudo svnserve -d -r /var/svn
如果报:svnserve: Can't bind server socket: Address already in use
解决办法:
使用 “ ps -e|grep svnserve ” 找到服务对应进程编号 ,使用kill 命令,之后再使用启动命令 , - 查看是否成功启动
ps -ef | grep vvnserve
停止 svn killall svnserve
# 停止进程- 设置svn 服务自启动
- 第一步 新建一个
.sh
文件vi /root/svn_qqtest_auto_start.sh
#!/bin/bash
/usr/bin/svn -d -r /var/svn/qqtest
这里的svnserve路径保险起见,最好写绝对路径,因为启动的时候,环境变量也许没加载。
which svnserve
- 修改该脚本的执行权限
chmod ug+x svn_qqtest_auto_start.sh
最后:加入自动运行
vi /etc/rc.d/rc.local
按i进入编辑模式,在末尾添加脚本的路径,如:
再按esc,再按两次大写Z,保存退出。好了 完美成功了 现在可以在你的本地链接远程 SVN 了
配置 post-commit
利用SVN的POST-COMMIT钩子自动部署代码 我们在开发的过程将代码提交到SVN后使用SVN的hook,通过post-commit脚本,在目 标文件夹根下执行svn update操作,将更新内容同步到测试环境,这样开发调试非常方便。
- 当我们安装建立好远端仓库后目录结构如下
进入 hooks 目录cd hooks
我们可以看到有个 post-commit.tmpl
的文件。 这是官方提供的一个 template 。我们直接 copy 这个文件
cp -f post-commit.tmpl post-commit
注意: copy 后的文件没有后缀名称
- 编辑 post-commit 文件
shell vi post-commit
删掉除了第一行 #!/bin/sh
之后的所有文件 然后输入
#!/bin/sh
/usr/bin/svn update --username wenpeng --password wp113000 /data/qqtest
# svn 命令路径 + update --username 您的用户名(svn设置的用户名) --password 您的密码(svn设置的密码) 您的服务器代码项目目录
- 即将完成 --- 最后一步 -- 修改权限
chmod +x post-commit
- Checkout一份代码到您的服务器代码项目目录
svn checkout svn://127.0.0.1/qqtest /data/qqtest
好了 已经完成了,这样,每次你提交代码的时候,都会执行您自己新建的 post-commit 文件, 自动 up 您的服务器项目代码