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

时间:2010-12-19 16:53:35

标签: svn post-commit

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

#!/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 个答案:

答案 0 :(得分:2)

您可以使用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