SVN post-commit hook:根据提交所属的项目更新工作副本

Posted

技术标签:

【中文标题】SVN post-commit hook:根据提交所属的项目更新工作副本【英文标题】:SVN post-commit hook: Update working copy depending of project the commit belonged to 【发布时间】:2011-05-27 21:46:07 【问题描述】:

我曾经有这个提交后挂钩来更新我的服务器上的工作副本:

#!/bin/sh
cd /var/www/MyWebAppStaging
svn up >> /var/log/svn/MyWebApp.log

/var/www/MyWebAppStaging 内部显然是我项目的工作副本

但现在我的存储库中有几个项目。我的存储库位于 /var/svn/repository 下,有两个项目:

MyWebApp --> trunk
MyMobileWebApp --> trunk

我在 /var/www 中有以下文件夹

/var/www

 |-->MyWebApp

 |-->MyWebAppStating

 |-->MyMobileWebApp

 |-->MyMobileWeAppStaging

我有人向 MyWebApp-Project 提交代码,我希望我的 post-commit 更新 /var/www/MyWebAppStaging 下的工作副本。如果一些提交代码到 MyMobileApp-Project 我希望我的提交后更新 /var/www/MyMobileAppStaging 下的工作副本

那么如何更改我的提交后,它会根据提交所属的项目更新正确的工作副本?

【问题讨论】:

【参考方案1】:

您可以使用 svnlook 找出提交中修改了哪些文件。为此,人们通常在 post-commit 挂钩中使用 Perl 或 Python,但这样的事情可能会起作用(未经测试):

if (svnlook changed -r $2 $1|grep MyWebApp)
then
    (cd /var/www/MyWebAppStaging; svn up >> /var/log/svn/MyWebApp.log)
fi
if (svnlook changed -r $2 $1|grep MyMobileApp)
then
    (cd /var/www/MyMobileAppStaging; svn up >> /var/log/svn/MyWebApp.log)
fi

【讨论】:

以上是关于SVN post-commit hook:根据提交所属的项目更新工作副本的主要内容,如果未能解决你的问题,请参考以下文章

SVN提交后自动同步到web服务器hooks的使用

SVN同步错误 post-commit hook failed (exit code 255) with no output.

svn hooks post-commit钩子自动部署

windows下svn钩子实现每次提交更新至web目录

[svn hooks]识别指定目录svn更新钩子

svn关联Jenkins自动发布代码