2012-01-06 132 views
0

我在Windows 2008服務器上的存儲庫中添加了一個post-commit掛鉤。所以每次提交時,我都會轉到我應用程序的文件夾並運行svn update。這是有效的,但它非常緩慢,並且TortoiseSVN在完成提交後才能完成。我怎樣才能讓這個更快?一種方法可能是不要cd到任何應用程序,但只能發送到發生提交的應用程序。我怎麼知道,哪個應用程序有提交?一些正則表達式和$ 1?我只嘗試過一個應用程序,並且只用了1.5分鐘就可以完成一個文件。SVN post-commit hook使得提交非常慢 - 如何解決?

感謝

回答

2

我會解耦從更新的承諾完全一樣(據我所知)持續集成服務器做。讓cron在您的應用程序上每隔X分鐘觸發一次更新。這樣,提交時間根本不會受到影響。

+0

如果您不想使用cron作業進行輪詢,則可以使用post commit掛鉤來表示某種調度程序或消息隊列。所以大部分工作在提交後不久仍由另一個進程處理。 – 2012-01-06 10:06:57

+0

這將是怎樣的?我將如何在批處理文件中執行該操作? – EOB 2012-01-06 10:11:05

+1

您可以使用start命令「異步執行」更新命令。 – 2012-01-06 10:38:29

0

取出顛覆鉤來看看Jenkins。 Jenkins是一個連續的構建服務器,但它在Subversion中完成提交後運行一個進程。通常,這可以是一個構建,但它也可以在您的服務器上運行Subversion更新。

詹金斯將記錄一切,並通知您(通過電子郵件,鳴叫,IM,甚至traffic light)出問題的時候。

很容易看到的變化,歷史等。此外,它不會減慢顛覆。

順便說一句,我建議如下過程:

  • 您的服務器從運行發言權C:\inetd\www
  • 創建一個名爲C:\inetd\www2新的目錄,並做了svn export到該目錄。
  • 重命名C:\inetd\www2C:\inetd\www。您可能不得不退回您的服務器。

這樣做是爲了確保您的服務器永遠不會運行,其目錄中的某些文件在版本2000時其他版本在版本2001上。這樣,所有更改都在同一時間完成。另外,你並沒有遍佈全部的目錄(儘管Subversion 1.7客戶端已經改進了這一點)。