2011-07-29 69 views
0

我想更新我的SVN大小爲20GB時更改的文件。Post commit hook問題

我的SVN回購位於:/媒體/磁盤3/velsvn /項目
我結帳的文件夾是:/媒體/磁盤2 /網絡/ htdocs目錄


(參考:Using SVN post-commit hook to update only files that have been committed

我後提交文件的樣子:

#!/bin/bash 
REPOS="$1" 
REV="$2" 
cd /media/disk2/www/htdocs 
svnlook dirs-changed /media/disk3/velsvn/projects | xargs /usr/bin/svn up -N 

(我是用回購和REV但他們給的錯誤,所以我刪除它們。當使用REV時,它用來說REV沒有被定義。在使用REPOS它曾經說[REPOS] /格式是不是一個文件或不退出)

我正試圖執行此文件時出現以下錯誤 -
跳過「PHP/htdocs中/支持者」 跳過「PHP/htdocs /校園」


任何人都可以在這方面幫助我。我浪費了2天的時間來處理這個問題,但沒有找到任何解決方案。

問候,

尼廷

回答

0

我可以改變我的方法解決問題。把它列在這裏,因爲它可能會幫助別人。可能是它不是一個完美的解決方案,但至少可以工作。

POST_COMMIT

#!/bin/sh 
wget http://localhost/update_svn.php 

update_svn.php

<?php 
$output = shell_exec('/media/disk3/velsvn/projects/hooks/svn_update_step1.sh'); 
echo "<pre>$output</pre>"; 
?> 

svn_update_step1.sh

ssh -i /media/d/mykey/id_rsa [email protected] /media/disk3/velsvn/projects/hooks/svn_update_step2.sh 

svn_update_step2.sh

#!/bin/sh 
cd /media/disk3/velsvn/projects/hooks 
rm -f filelist 
rm -f log 
whoami >> log 

    svnlook dirs-changed /media/disk3/velsvn/projects/ | sed "s/^..//" | awk '{ print substr($0, 9) }' >> /media/disk3/velsvn/projects/hooks/filelist; sed -i -e 's#^#/media/disk2/www/htdocs#' filelist; cat /media/disk3/velsvn/projects/hooks/filelist | xargs /usr/bin/svn up -N >> /media/disk3/velsvn/projects/hooks/log 

注: 1. /媒體/ d /的myKey/id_rsa是將其用於SSH訪問生成的密鑰。這確保系統不會等待用戶提供密碼以連接到SVN以及執行shell腳本。 2. POST-COMMIT文件和shell文件sh1和sh2被賦予+ x mod,以便它們可以被執行。

請隨時評論這篇文章,並提供一個更好看的解決方案。我現在所知道的是,這個解決方案可以工作:)

+0

您不需要Web服務器來執行本地命令行腳本。 –