2

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

#!/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 下的工作副本

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

4

1 回答 1

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
于 2010-12-19T20:15:14.143 回答