2008-12-31 36 views
9

我不是SCM工具的實驗用戶,儘管我相信他們的實用性,當然。 我在以前的工作中使用了一些不起眼的商業工具,Perforce在當前工作中,並且爲我的小個人項目玩過一些TortoiseSVN,但我不喜歡在整個地方有很多.svn文件夾,進行搜索,備份等更加困難。 然後我發現了分佈式SCM的興趣,我選擇了明顯更簡單(比git)Mercurial方式,仍然是爲了我個人的個人需求。我正在學習如何正確使用它,閱讀了部分wiki並處於優秀的PDF書籍中。Mercurial實踐:使用IDE和可擴展性

我看到經常重複,例如在Mercurial working practices,「不要猶豫,本地使用多個樹。水銀使這個快速,重量輕。」和「的每個功能,你在工作,創建一個新的樹「」。 這些都是有趣而且明智的建議,但是它們傷害了我一些中央SCM的小習慣,在那裏我們有一個「神聖」的中央倉庫,分支機構經過精心規劃(由管理員處理),變更單必須由(高級)絕不能打破建立,等等:-)開始一個新的分支工作,需要相當長一段時間......

所以我在上面的光的兩個問題:

  • 如何實踐在IDE和類似的環境中是否要做大量的克隆?如果項目有配置/設置文件,makefile或Ant腳本或shell腳本或其他什麼,需要路徑更新怎麼辦? (是的,可能是一個壞主意......)例如,在Eclipse中,如果我想編譯並運行一個克隆,那麼我必須完成另一個項目,調整Java構建路徑,運行/調試目標等等。除非Eclipse插件緩解這個任務。我在這裏錯過一些設施嗎?

  • 這是如何衡量的?我已經閱讀過汞代碼大的代碼庫,但我很困惑。在我的工作中,我們有一個Java應用程序(嗯,幾個圍繞一個大的通用內核)擁有大約2百萬行代碼,單獨爲代碼加權約110MB。在舊的(2004)Windows工作站上進行乾淨的編譯需要15分鐘的時間來生成50MB的類文件!我沒有看到自己克隆整個項目來更改3個文件。那麼這裏的做法是什麼?

我還沒有看到這些在我的閱讀中解決的問題,所以我希望這會成爲一個有用的線程。

回答

1

問題1:

PIDA IDE具有相當不錯的水銀整合。我們也使用Mercurial進行開發。就我個人而言,我有大約15個併發克隆進行某些項目,而IDE應對很好。我們沒有調整構建腳本等問題,我們可以「克隆和去」。

它是那麼容易,在許多情況下,我會克隆到類似的bug數量:

 
hg clone http://pida.co.uk/hg pida-345 

了BUG#345,我準備修復。

如果您不得不根據應用程序的實際簽出目錄來調整構建腳本,我可能會認爲您的構建腳本應該使用某種類型的項目相對路徑,而不是硬編碼路徑。

+0

謝謝你的有趣的評論,我已經訪問過該網站,現在看來,我應該嘗試一下。 現在,我的問題是通用的:這個方案如何與現有的項目/ IDE集成?當然,我同意相對路徑的需要,但有些IDE可能不符合。 – PhiLho 2009-01-01 12:21:31

2

斐洛:我在這個新的,但水銀也有「內部分支」,您可以在單個存儲庫中使用克隆它代替。

而不是

hg clone toto toto-bug-434 

你可以做

cd toto 
hg branch bug-434 
hg update bug-434 
... 
hg commit 
hg update default 

建立了分公司,並來回切換。當您切換分支時,您的不在轉速控制下的內置文件不會消失,其中一些文件會隨着基礎源的修改而過時。您的IDE將重建所需的內容,而不是更多。它很像CVS或顛覆。

你應該還是有除了你的「工作」倉庫裏面乾淨「進入」和「外出」信息庫。只是你的'工作'可以用於多種目的。

這就是說,任何試圖錯綜複雜之前,你應該克隆您工作回購。如果出現任何問題,您可以將克隆丟棄並重新開始。

+0

問題是,你不能刪除這樣的分支 – rkj 2009-01-05 11:36:28

3

你提出了不少好點!

  • 如何實際是它做的很多克隆,在IDE和這樣的背景下?

你說得對,它可能難以管理許多克隆時,IDE和其他工具取決於絕對路徑。部分原因可以通過在配置文件中始終使用相對路徑來解決 - 無論使用何種版本控制系統,確保源碼簽出可以從任何位置進行編譯都是一個很好的目標:-)

但是當你不能或不想打擾幾個克隆時,請注意a single clone can cope with multiple branches。 「hgbook」強調許多克隆,因爲這是一種概念上簡單且非常安全的工作方式。當你獲得更多的經驗時,你會發現你可以在一個存儲庫中使用多個頭(也許通過命名爲bookmarks)來做同樣的事情。

  • 這是如何衡量的?

克隆一個110 MB存儲庫應該是相當快:這取決於它需要多長時間來寫110 MB到磁盤。在一個recent message to the Mercurial mailinglist據報道,6.3 GB的克隆需要4分鐘 - 縮小到110 MB約4秒。這應該是速度不夠快,你的茶仍然是騙術的溫暖:-)部分原因是歷史數據只是硬鏈接(有的話,還要在Windows上),所以它只有在工作寫出來的文件的問題複製。