2008-09-26 14 views
1

我目前正在與三個站點上的開發人員合作開發一個項目。其中一個遺址位於印度德里,另外兩個位於歐洲。歐洲辦事處與德里辦事處之間的溝通帶寬很差,延遲也很差,而且從那裏的CVS更新通常需要5-10分鐘,即使只有少數文件發生了變化。如何在多站點場景中提高CVS性能?

是否有任何優秀的CVS代理或保持單獨的CVS服務器同步的簡潔方法?在這種情況下,您是否有任何其他提示可以改進性能?

不幸的是,我們將在該項目的範圍內被CVS卡住,所以在短期內切換到完全不同的東西不是一種選擇。

回答

1

爲什麼不切換選項?

我強烈建議切換到SVN或git。並且你儘快做這種轉換...就像今天:)

甚至還有svn tools/guidesgit tools/guides在那裏會爲你做這個CVS轉換。

我個人對我的工作使用並熱愛SVN,但基於上面的描述,這聽起來像git可能是更好的選擇。

+0

我們一定會切換!但是,考慮到組織規模(> 200人)以及相當多的依靠CVS的自動工具和程序,我想這需要幾個月的時間才能使變更生效。我們需要一些時間來計劃,並說服經理人。 =) – SteinNorheim 2008-09-26 08:32:55

1

以下是我已經在類似情況下很久以前完成時的帶寬和不可靠的網絡是一個問題:

  • 使倉庫的副本,並在遠程位置安裝。你知道有CVS1和CVS2。
  • 通過阻止提交來鎖定兩個副本(CVS1)中的一個。這是通過修改CVSROOT模塊中的'commitinfo'來實現的。
  • CVS1可用於只更新
  • CVS2可用於更新和提交

當你想給訪問中承諾要複製1,步驟如下:

  • 鎖CVS2
  • 複製CVS2到CVS1
  • 解鎖CVS1

這聽起來很麻煩,而且這是如果你手動做,但它的工作原理。如果你手動操作,它需要一點紀律。可能是時區在你身邊一次。

我編寫了一個工具來跟蹤誰擁有提交令牌並通過rsync和SSH自動將存儲庫從一個站點傳輸到另一個站點。它很好地工作了幾年。我們從未丟失任何數據,並且花費了大約5分鐘將令牌從一個位置轉移到另一個位置。

傳輸工具是用perl編寫的,花了我大約兩週的時間來開發它,全天候工作。

我知道很久以前FreeBSD開發人員使用CVSup,但我從來沒有使用過這個工具。