2013-01-10 37 views
0

我們使用post-commit掛鉤將文件從源複製到目標(源和目標是存儲庫的根文件夾)。 文件夾。如果屬性(屬性名稱:版本)應用於源文件夾下的任何文件夾,我們會從post-commit.bat調用python腳本來執行復制。Post-commit掛鉤沒有被調用某些提交

我們在做拷貝時遇到了一個問題,有些文件夾沒有從源拷貝到目的地。 我們通過執行以下步驟來發現問題步驟 在python腳本的開頭,我們記錄了修訂號併爲每次提交更改了日誌文件的路徑。 但對於某些兩個文件夾,日誌文件中沒有屬性集條目(修訂號和更改的路徑)。 (請注意,在post-commit.bat中,我們只是調用python腳本,沒有別的)。 當我們第二次嘗試時,這兩個文件夾的屬性條目在日誌文件中可用,並且文件被成功複製到目標文件夾。

是否有任何Post-Commit掛鉤未被調用的情況?

回答

2

應該始終調用post-commit掛鉤,但由於某種原因它可能會失敗,如果提交的用戶沒有告訴您,您可能永遠不會知道它。畢竟,就用戶而言,提交完成後,他們只是收到了一些並不意味着太多的錯誤信息。

現在,你是怎麼做的?你是否將文件從一個Subversion目錄複製到另一個目錄,然後提交這些更改?如果是這樣,你如何防止你的post-commit鉤子第二次觸發。如果是這樣的話,那麼你的天才系統可能會阻止post-commit鉤子在無限循環中被觸發,這會導致問題。

即使你沒有這樣做,創建一個post-commit鉤子來做一些可能需要幾秒鐘時間的事情也不是一個好主意。一個提交無法完成,直到提交後掛鉤完成。如果提交後的掛鉤需要10秒鐘的時間才能運行,那麼用戶不得不坐在那裏想知道發生了什麼。

您最好使用CI系統(例如Jenkins)來爲您創建分發。 Jenkins很容易設置,並且會在後處理過程中處理後提交,而不會在提交後的地獄中綁定用戶的提交過程。如果由於某種原因,提交後過程失敗,詹金斯可以通過電子郵件發送提醒您的問題。 Jenkins用戶界面完全基於Web,開發人員可以輕鬆查看提交後流程的歷史記錄。