linux svn postcommit,使用SVN的post-commit hooks 同步推送代码到生产环境

假设你的web server domain是

http://your.com

网站存放于

/var/www/

需要在本机修改SVN后提交后,网站代码也随之更改。那么可以这样。

cd /opt/reposiory/hooks/

cp post-commit.tmpl post-commit

chown www-data:www-data post-commit

chmod a+x post-commit

nano post-commit

可以看到参数$1是repository

参数$2是revision

模板里面已经初始化了

svn update --username some --password one /var/dir

#svn update –-username some --password one /var/ppt

这里面说段小插曲。

一开始我是按照第二行写的。但是死活commit后不同步。

于是手动执行了post-commit,发现这样的提示

"跳过 –-username......"

我就奇怪了。怎么把username参数当目录来了?

把那行注释掉,重新手动输入了一下,终于好用了。

于是我就开始找问题所在了

分别在nano和vim里面看,没发现什么问题,都是一个短横线。

于是拿到editplus里面看,还是一样的短横线

火大了,于是开始算着两个字母的base64值,终于发现问题了

–-username

1

–-username

算出来是IBMtdXNlcm5hbWU=

--username

1

--username

算出来是LS11c2VybmFtZQ==

看来确实不一样,于是粘贴到blog的mce编辑器里面,果然现原形了。

算出来是IBM的那个是异常一短2个横线就是一个中文破折号删掉一半那种。。折腾我半天!!!

另外还要注意到就是,使用SVN update的目标目录必须先check out一下,否则也会被skip。

如果系统使用中文环境,别忘了加utf8编码选项。

也就是这样

[bash]#!/bin/sh

REPOS="$1"

REV="$2"

#/usr/share/subversion/hook-scripts/commit-email.pl \

# "$REPOS" "$REV" commit-watchers@example.org

export LANG=zh_CN.UTF-8

#

svn update --username some --password one /var/ppt[/bash]

SVN官方库中有好多hook脚本。利用hook机制可以实现很多功能。比如SVN更新邮件通知等

# For more examples and pre-written hooks, see those in

# the Subversion repository at

# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and

# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/

安全问题:

这样过去的目录会存在.svn目录,造成安全隐患

可以使用apache的RedirectMatch来保证安全。

例如:

RedirectMatch 301 (.*)\.svn(.*) http://g.cn/$1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值