2014-10-28 82 views
-1

根據@ nvie的definition of feature branch,我認爲項目的每個類都應該是一個功能分支。Git - 組成和分支的模型

例如:

git checkout -b car develop 
git checkout -b wheel develop 
git checkout -b engine develop 

而且在每一個分支,我定義相關類的實現來正確命名一個,如wheelwheel_daowheel_composite

在這種情況下,carwheelengine的擁有者。所以我想,將wheelengine分支合併到汽車中是正確的。

W---\ 
    \ 
------C 
    /
E---/ 

但是我發現,這可能是由於可怕的事實,enginewheel仍然會得到新的提交,所以每一個提交時間被添加到這些分支,我會再次將它併入car

我希望你與我分享一篇文章,我可以找到更多關於使用git與模型(MVC也許?)的信息。或者,也許你們可以告訴我一種更合適的方式來分支作品。

+1

我認爲你在做錯誤的假設,即類與特徵相等。儘管在實現新功能時通常會創建新類,但新類在提供新功能之前不會構成功能。當你遇到需要幾個類來解決的更復雜的案例時,你的模型確實是有缺陷的 - 這意味着在解決同一問題的同時不斷更換分支和重新綁定。 – max 2014-10-28 20:07:07

回答

1

你的第一印象

根據特性分支的@ nvie的定義,我認爲每個 類項目的應該是一個特性分支。

肯定不符合標準。 The article states

一個特性分支的精髓在於它只要 功能在發展中存在的,但最終會被合併到 發展

而且regarding the develop branch

我們認爲產地/開發是主分支,其中源代碼HEAD的始終反映了最新發布的 下一版本的更改狀態。有人會稱之爲「整合 分支」。 這是從建立任何自動夜間生成的地方。

所以嚴格根據這個定義,如果你限制一個特性分支到一個類,你必須限制所有更改的那類是不可破(的建設),否則你無法合併直接開發分支。

現在,如果您遵循模型 - 視圖 - 控制器模式,則應該有單元測試和理想的集成測試。每當你添加一個功能,你應該想知道它什麼時候完成,所以每個功能應該引入新的測試或修改現有的功能。

因此,要回答你的問題,分支組成(通常)適當的方式是決定哪些測試描述的功能和只包括改變這些測試驗證。

試着相信你的git的工作流程的有效性在很大程度上取決於你的測試工作流程決定。