2011-05-18 92 views
1

我正在使用Visual Studio的GUI DB設計器繪製數據訪問層的項目。在源代碼管理中管理Visual Studio數據庫設計器文件

我使用mercurial作爲我的VCS,但它不應該太重要。每當我在一個分支中更改數據庫設計器屏幕,然後在另一個分支中進行另一個更改,並試圖合併這兩個分支時......我幾乎總是會得到非常複雜的合併衝突,即使通過手工操作也很難弄清楚數據庫設計人員生成的.cs文件。

你如何處理這個問題?

+1

恕我直言,Visual Studio應該以確定性的方式輸出設計器文件。例如,按類型,訪問級別和名稱對符號進行排序。通過這種方式,如果您進行的更改會導致添加單個屬性,那麼整個該死的文件不會以不同的順序重寫......如果這樣做了,那麼版本控制就不會有問題。事實上,我的團隊(我們也使用Mercurial)基本上必須「鎖定」我們的實體框架模型(通過口頭交流),進行修改,提交併推送,然後「解鎖」它們;允許其他人進行更改。這是非常困難的合併... – bambams 2011-09-30 20:42:57

回答

1

分支/合併數據庫差異不適用於文本差異/合併工具。有像ERwin這樣的特殊工具(見http://erwin.com/)可以處理這些工具,但這些工具很昂貴,並且可能不易於集成到VCS中。

我認爲使用Visual Studio DB設計器時最好的選擇是避免完全分支。或者不要使用數據庫設計器來設計您的數據庫。最好有一個或多或少簡單的描述文件爲您的數據庫,並通過手寫生成器生成您需要的一切。

+1

最好的選擇是微軟修復他們該死的代碼生成器... – bambams 2011-09-30 20:49:17

1

我認爲@doc布朗的回答是很大的,這是DVCSs

給出一個DVCS的複製 - 修改 - 合併工作流程的一個常見問題,你會更好使用文本格式(如@Doc Brown所述),或者開發一個流程/約定,允許您將更改傳達給團隊的其他成員,以便在嘗試更新/拉取時不會彼此接觸。

處理二進制文件的能力與集中式VCS一起使用效果很好,因爲您在簽出(簽出 - 修改 - 簽入工作流程)時具有鎖定文件的能力(有時是有限的)。

FWIW,這是一個關於SO主題的大討論。

Binary Files in DVCS

+0

我將「設計器文件」解釋爲* .designer.cs或* .designer.vb文件,它是爲事物的數量。它們是文本,但它們仍然非常難以合併,因爲簡單的更改會導致整個文件以不同的方式重寫。另外,這不限於分佈式版本控制系統。它適用於任何版本控制系統。兩名成員可以在Subversion中進行單獨更改,但仍然需要合併它們。 – bambams 2011-09-30 20:48:40

+0

@bamcciag - 如果文件被鎖定,兩個人不能同時進行更改。 – 2011-09-30 21:55:12

+0

如果文件被鎖定,有人不能完成他們的工作,不如回家。 > _>版本控制(特別是分佈式版本控制;不能鎖定文件是一項功能)的全部重點是人人都可以自由工作而不會互相干擾。 – bambams 2011-10-25 15:09:16

相關問題