ubuntu底下搭建svn并添加hooks实现自动更新

摘要:但是这样会有一个问题,就是每次提交到服务器,都需要从服务器手动更新,很烦
然后我们需要hooks实现自动更新,在每一次提交的时候。

如题:
一:svn搭建:
1、安装svn

sudo apt-get install subversion

2、创建SVN库:以root身份输入命令svnadmin create /home/svnrepos(/home/svnrepos为库所在目录);

3、修改配置文件
vim /home/svnrepos/conf/svnserve.conf

#设置匿名不可以访问
anon-access = none
#设置认证用户的权限
auth-access = write
#密码数据库的支持
password-db = passwd

vim /home/svnrepos/conf/passwd

[users]
# harry = harryssecret
# sally = sallyssecret
# 用户名 = 密码
andy = 123456

*注意不同的配置路径

4、启动svn

svnserve -d -r /home/svnrepos 

在本地新建一个文件夹,比如demo,然后svn checkout  设置ip,user,password
(当然本地需要转svn客户端)

随便新建一个文件,svn commit

切到服务器,随便新建一个目录,比如/home/demo 然后 
svn checkout svn://127.0.0.1/ /home/demo
cd /home/demo
ls
就可以看到提交的文件了。

但是这样会有一个问题,就是每次提交到服务器,都需要从服务器手动更新,很烦
然后我们需要hooks实现自动更新,在每一次提交的时候。

二、hooks处理:
cd /home/svnrepos/hooks
vim post-commit:

#!/bin/sh
REPOS="$1"
REV="$2"
export LANG=zh_CN.UTF-8
#注意这里设置成自己想要更新的目录,已经用户名和密码
svn update /var/www --username andy --password 123456
#echo `whoami`,$REPOS,$REV >> /home/rollenc/svn_hook_var.txt
#svn update /var/www --username andy --password 123456 2>/home/svn_hook_log.txt

这样就可以自动更新了,每次本地提交的时候。
不过还有一点令我很不爽,就是每次提交过来的时候都是root用户root组,而且权限给的好低,644。

在post-commit加两句:

chown -R www-data:www-data /var/www
chmod 755 -R /var/www

(加在svn update 底下,www-data为apache的用户和组咯)

就这样,处理完了,至于更新时改用户和组你们有更好的方法也欢迎留言哦,谢谢。
还有每次关闭svn的时候我都:
killall svnserve 
是不是太暴力了?有没有类似数据库的命令:
service mysql stop
之类的,不知啊,求解。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/98602.html

(0)
上一篇 2021年8月21日
下一篇 2021年8月21日

相关推荐

发表回复

登录后才能评论