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同步错误 post-commit hook failed (exit code 255) with no output.