注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

成功源于细节

梦想、奋斗、收获

 
 
 

日志

 
 
 
 

SVN提交后自动更新post-commit,update无效  

2016-06-10 21:41:36|  分类: svn |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

SVN提交后自动更新post-commit

使用svnadmin create 创建一个版本库:

svnadmin create REPO

每个版本库的目录下有一个hooks目录:

# ls /home/svn/repo/
conf dav db format hooks locks README.txt

在每个版本库下有hooks文件夹,里面有很多钩子程序:

# ls -l hooks/
total 40
-rwxr-xr-x 1 www-data www-data 332 2010-05-30 16:47 post-commit
-rw-r–r– 1 www-data www-data 2000 2010-05-30 15:22 post-commit.tmpl
-rw-r–r– 1 www-data www-data 1663 2010-05-29 23:28 post-lock.tmpl
-rw-r–r– 1 www-data www-data 2322 2010-05-29 23:28 post-revprop-change.tmpl
-rw-r–r– 1 www-data www-data 1592 2010-05-29 23:28 post-unlock.tmpl
-rw-r–r– 1 www-data www-data 3488 2010-05-29 23:28 pre-commit.tmpl
-rw-r–r– 1 www-data www-data 2410 2010-05-29 23:28 pre-lock.tmpl
-rw-r–r– 1 www-data www-data 2796 2010-05-29 23:28 pre-revprop-change.tmpl
-rw-r–r– 1 www-data www-data 2100 2010-05-29 23:28 pre-unlock.tmpl
-rw-r–r– 1 www-data www-data 2830 2010-05-29 23:28 start-commit.tmpl

在执行commit操作之后会自动执行post-commit这个钩子程序。

因此可以设置post-commit来自动更新:


操作步骤如下:

1. 使用checkout建立一个工作复本

mkdir /home/web

# chown www-data:www-data web

ls -l web
drwxr-xr-x 2 www-data www-data 4096 2010-05-30 16:15 web

必须使用apache的所属用户和组(在ubuntu下面的是www-data)来执行:check out

# sudo su www-data
$ cd /home/web
$ svn checkout http://svn.love.com/svn/repo/www/

Authentication realm: <http://svn.love.com:80> Repo Auth
Password for ‘www-data’:
Authentication realm: <http://svn.love.com:80> Repo Auth
Username: jack
Password for ‘jack’:

———————————————————————–
ATTENTION! Your password for authentication realm:

<http://svn.love.com:80> Repo Auth

can only be stored to disk unencrypted! You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible. See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the ‘store-plaintext-passwords’ option to either ‘yes’ or ‘no’ in
‘/var/www/.subversion/servers’.
———————————————————————–
Store password unencrypted (yes/no)? yes

连续输入2次 “yes”

# ls -al www/
drwxr-xr-x 6 www-data www-data 4096 2010-05-30 16:18 .svn
可以看到.svn的权限,userown、goupown都是www-data

 

2,使用svn update测试,看www-data用户是否有权限更新。

$ svn update /home/web/www –username svnuser –password svnpasswd
在连续输入2次”yes”或者”no”之后、可以看到已经更新成功:
Store password unencrypted (yes/no)? At revision 37.

3,在hooks目录下面的添加一个post-commit脚本文件

#!/bin/sh

REPOS=”$1″
REV=”$2″
export LANG=en_US.UTF-8
svn update /home/web/www –username svnuser –password svnpasswd

在客户端commit后报错
sudo su www-data
$ cd /home/svn/repo/hooks
$ ./post-commit

提示:
Store password unencrypted (yes/no)?

在svn update –help中找到了 –no-auth-cache 这个参数:

–no-auth-cache : do not cache authentication tokens

加上这个参数后终于可以了:

root@SVN:/home/svn/repo/hooks# cat post-commit

#!/bin/sh

REPOS=”$1″
REV=”$2″
export LANG=en_US.UTF-8
svn update /home/web/www --username svnuser --password svnpasswd --no-auth-cache

原文链接:SVN提交后自动更新post-commit,转发请注明来源!
总结:要使post-commit能正常执行成功,要满足下面几个条件1.post-commit要有apache或svn能执行的权限2.svn update /var/www/ 要有apache或svn写权限3.export LANG=en_US.UTF-84.不有省略 --no-auth-cache参数

  评论这张
 
阅读(160)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017