2013-03-14 58 views
1

我使用svn apache模塊來管理web服務器上的我的回購站和tartoise svn與它進行交互。win apache svn post-commit更新掛起

我想在服務器上自動更新服務器上的工作副本,這樣我就不必在服務器上手動指定遠程桌面並手動運行更新了。

對於我創建了一個簡單的post-commit鉤子在回購

echo %username% >> C:\debug.txt 
svn update F:\wampserver64\www\netcity\maintenance\ >> C:\debug.txt 

問題是,我可以不再承諾回購的任何變化。 Commit達到100%後掛起,OK按鈕變灰。之後,提交的文件在客戶端和服務器都處於鎖定狀態,我必須在兩個站點上清理並更新manualy。 echo%username%用於調試目的。我懷疑這可能是一個權限問題,所以我eched用戶名svn運行。這是輸出:

XIBM$ 
Updating 'F:\wampserver64\www\netcity\maintenance': 

XIBM $甚至不是用戶名。這是服務器的名稱。如果manualy運行,將.bat鉤運行正常,並返回一個reaonable輸出:

liviu.gelea 
Updating 'F:\wampserver64\www\netcity\maintenance': 
At revision 19. 

我試過設置全權限XIBM /用戶,用戶authentificated,管理員,來賓和虛擬服務器上移動的一切,但沒有運氣。所以任何幫助都非常令人滿意。

+0

debug.txt的內容是什麼? – thekbb 2013-03-17 16:55:10

+0

最後2個灰色框表示debug.txt以鉤子和手動方式運行。 – Liviuge 2013-03-17 20:40:05

回答

1

什麼帳戶是svn運行?我推薦的幾件事情

  1. 在更新指定--username,你可能不希望添加SVN運行爲訪問回購
  2. 添加--accept theirs-full到本地服務帳戶總是在衝突
  3. 的事件的服務器副本,一旦你撥打你可能會希望--quiet以及
+0

對於遲到的答案感到抱歉。該日誌應包含完整的用戶名,但只包含服務器名稱和「$」:XIBM $ 我正在儘快嘗試您的建議。 (tomorow :)) – Liviuge 2013-03-26 16:09:31

2

正如我多次提到,不要用後提交腳本做到這一點。當該提交後腳本正在運行時,該用戶被鎖定並正在等待該提交完成。在這段時間裏,他們對電腦,Subversion和你生氣。

而是使用像Jenkins這樣的持續集成引擎來處理這個問題。詹金斯很容易設置,並且會消除提交後腳本的痛苦。

另外,詹金斯可以保存所有提交的完整歷史記錄,以及發生了什麼更新到服務器,並可以發送電子郵件給您,如果出現問題。更好的是,你可以使用諸如Promote Build插件來挑選你想要部署到服務器的提交。

+0

感謝您的建議,但我們確實只有2個用戶,提交非常罕見。儘管如此,由於服務器是windows系統,而且我們沒有ssh訪問權限,只有遠程桌面才能通過遠程桌面進行登錄以便進行更新。 – Liviuge 2013-03-26 16:08:16