2010-12-19 63 views
2

的我曾經有過這個post-commit鉤子到我的服務器上更新我的工作拷貝:SVN post-commit鉤子:更新工作副本根據項目的提交屬於

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

裏面的/ var/WWW/MyWebAppStaging顯然是我的項目的工作副本

但是現在我的倉庫中有幾個項目。我的倉庫位於在/ var/SVN /存儲庫,並有兩個項目:

MyWebApp --> trunk 
MyMobileWebApp --> trunk 

我在/ var/WWW

/var/www 

|-->MyWebApp 

|-->MyWebAppStating 

|-->MyMobileWebApp 

|-->MyMobileWeAppStaging 

我有人提交代碼到MyWebApp項目我會內的以下文件夾像我的提交後更新/ var/www/MyWebAppStaging下的工作副本。如果有人向MyMobileApp-Project提交代碼,我希望我的提交後提交/ var/www/MyMobileAppStaging

因此如何更改我的提交後,更新正確的工作副本取決於提交所屬的項目?

回答

2

您可以使用svnlook找出在提交中哪些文件已被修改。爲此,人們通常在後提交鉤子中使用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