2009-04-07 73 views
11

我正在尋找一些有關在Perforce倉庫中創建各個開發分支的方法的優缺點的反饋。如果我理解正確,有兩種處理方法。首先是創建一個專用分支,它是您正在開發的分支的完整副本。該分支將完全獨立並完全隔離目標分支上的更改。Perforce開發分支 - 稀疏分支與私有分支

我聽說過的另一種方法是推薦使用稀疏分支。它在Practical Perforce(第9章,第242頁)中有描述。這會創建一個分支,但僅限於需要編輯的文件。然後,您將目標分支客戶端視圖與此稀疏開發分支客戶端視圖重疊。

這兩種方法都需要程序員執行一些集成工作,以便在目標分支中獲得更改。 Private Branch方法似乎需要更多的額外內存才能創建整個分支的副本。但是,Perforce文檔聲明它在這種情況下執行「懶惰拷貝」。

集成還使Perforce能夠執行文件的「延遲複製」。當您分支 文件時,服務器實際上並不擁有文件的兩個副本 - 它僅保存源文件,數據庫中的指針記錄了發生到目標文件的分支的事實。延遲副本使分支成爲低開銷操作;服務器不必跟蹤文件的重複副本。

這使得它看起來像稀疏分支方法只是增加了人爲錯誤的可能性,例如,開發人員可能會開始工作的文件,他們沒有添加到稀疏分支和那麼意外更新了對打破構建的目標分支的更改。但是,Sparse分支功能存在是有原因的。任何反饋意見,爲什麼它存在,爲什麼我應該使用它在一個完整的私人分支(反之亦然)將不勝感激。

回答

3

正如您從文檔中注意到的那樣,並不是一個真正的問題。速度雖然。同步整個開發樹可能需要很長時間。整合回來也需要一段時間。如果你只需要樹的一個分支,那麼這兩個操作都要快得多。

正如您所說,人爲錯誤可能會發生,但是如果您製作branchspec,它可以幫助減輕一些潛在的錯誤。

3

同步速度和客戶端磁盤空間是創建完整分支(懶惰複製幫助服務器,但不是網絡或客戶端)的問題。然而,我發現設置和理解比創建稀疏分支更容易,所以完整分支就是我們最終使用的。

+0

客戶端磁盤空間上的優點。我忘了指出,因爲我的機器上有空間,但在大多數情況下它仍然有效。 – Fostah 2009-04-08 13:45:49

3

稀疏分支適合的一個很好的情況是當您有一個複雜的產品可能由大量模塊組成。假設整個系統的構建需要很長時間,並且也許同步需要一段時間 - 很多數據文件。但是你的開發只需要修改整個源代碼庫的一小部分 - 可能是一個或兩個模塊,可能有一些鏈接代碼「更高」。

在這種情況下,做一個稀疏的分支可以有很大的意義。這意味着你已經同步了大部分內容,並且可能已經建立了。但是你必須小心,你修改的任何文件都是先分支的 - 否則你冒險破壞主線。當然,它需要程序員更多的關心。

另一種情況下稀疏分支可能是做支發展的唯一可行的方法是,如果它是很難有你的應用程序的多個版本在開發機器上。在這種情況下,建立一個主線和一個開發版本並且並行運行是非常棘手的。顯然不理想,但有些產品就像是必然或歷史。