2008-09-26 103 views
5

我有責任在這個特定的項目中使用CVS,所以即使我真的想切換到別的東西,比如Git,我也不能。所以,我真正的問題是這樣的:我們有一個約定,我們每次創建一個發佈(我們也標記,但除此之外),我們在CVS中創建一個新的分支。我們將這些版本分支稱爲這些分支,他們允許我們輕鬆檢出特定版本並對其進行修復 - 這是我們的次要版本。CVS中的功能分支?

但是現在我有一些很大的風險很大的變化,如果我在Git工作,我會在眨眼之間創建一個功能分支。但是,在CVS工作時,我試圖在另一個項目中創建功能分支,發現事情很快就變得雜亂無章。我結束了很多分支機構,並失去了哪些分支機構同步,哪些分支機構需要合併,哪些分支機構不再使用。

因此,靠近問號逐漸靠近,在CVS中使用功能分支是否可行?他們是否太麻煩是值得的,或者我最終會因爲不使用它們而感到抱歉?我應該咬緊牙關,剛開始在HEAD中編寫代碼,但是要彎曲我的編碼過程,以儘可能以最不顯眼的方式介紹變化?

回答

5

如果你是唯一一個在功能分支上開發的人,你可以簡單地使用Git作爲你的「沙盒開發」系統,然後一旦你完成了改變,將它們合併到你的CVS倉庫中。

您仍然從中級工作產品獲得源代碼管理的好處。

+0

我接受了這個回答,因爲這是我決定去做的方式。 – 2008-10-06 10:49:32

1

有一點要考慮的是實際接近功能分支,當你用它做,一旦你與主幹線合併回來。在這種情況下,關閉意味着放棄分支,而不是真正的刪除。

工作合併後,確實不需要分支「存在」。

爲了快速識別哪些分支是功能分支,我建議命名約定泄漏「FEAT_MY_FEATURE」或「FEAT_20080926」(開始日期?)。這樣可以在瀏覽存儲庫結構時輕鬆忽略所有這些功能分支。

+0

你說的這個「關閉」是什麼?我認爲有一種方法可以刪除分支,但關閉分支並不是我以前聽說過的。谷歌搜索是暗示它可能是基於約定:http://www.x.org/wiki/CvsBranchnames – 2008-09-26 11:29:00

+0

我的意思是關閉是「停止使用它們/忘記它們」一旦合併發生,放棄分支 – Benoit 2008-09-26 12:05:29

3

有一個關於分支策略的優秀討論,稱爲streamed lines這可能會有所幫助 - 它描述了使用功能分支的優缺點。

它還包括代碼行owenership以及您可能想實施的政策選項

+0

有很多東西需要閱讀。該文件是舊的。但是,我會仔細看看它。 – 2008-09-26 13:00:00

1

我曾經在一個環境中工作了幾年在那裏,這是常見的做法,這是非常痛苦的。確保合併是您的項目計劃的一部分,因爲它們將耗費大量時間併成爲延遲來源。

記錄分支機構併爲其分配具體責任有一點幫助。

我們必須創建一個工具來幫助我們逐步合併更改(一次更改一次,而不是合併分支尖端),因爲如果兩個分支發散,CVS表現不佳。

經常同步(至少每週一次)。

我認爲回顧這個過程的最好方法是確保分歧保持最小,並通過使用Scrum來分隔不同里程碑中的風險發展。我也鼓勵您閱讀SCM Patterns。這本書包含了很多好的建議。