2008-10-03 70 views
8

我們使用Subversion作爲我們的源代碼控制系統,並將VisualStudio項目文件(vcproj)存儲在源代碼管理系統中,正如我想的那樣。在Subversion中,我們不使用任何形式的文件鎖定,所以如果兩個開發人員同時在同一個項目中工作,並且將文件添加到項目或更改設置,則第二個提交必須合併這些更改。如何管理由多個開發人員更改的源代碼管理中的.vcproj文件?

如何合併這些更改?

vcproj文件只是文本文件,所以可以用手編輯它們,但它們不太適合手工編輯,尤其是初級開發人員。

我能想到的辦法是

  • 從SVN獲取最新版本並重新添加所有本地更改手動
  • 手動編輯文件,以從自動合併解決任何衝突
  • 實施某種形式的鎖定方案以防止同時發生的變化
  • 在開發者之間達成協議,使其不會同時發生變化

目前我們正在使用手動重新添加所有更改的第一個選項,但這很耗時,而且我想知道是否有更好的方法。

對於源文件,自動合併功能在大多數情況下都能正常工作,並且不會產生很多衝突。

+0

您可能會發現,如果您經常遇到檢查衝突,您可以通過更改項目樹的組織方式來獲益。 IE:不是有一個.vcproj文件有500個文件,有1個項目有50個文件鏈接到9個庫,每個文件有50個文件。如果您發現*無法*將項目拆分爲單獨的庫,那麼可能花時間做到這一點將最終提高開發人員的效率,因爲模塊化不僅僅有助於項目文件維護。 – KeyserSoze 2010-10-23 06:17:56

回答

4

我發現選項2(手工編輯文件)通常工作得很好,只要你使用了一個好的差異工具(我使用WinMerge)。我遇到的主要問題是Visual Studio有時會重新排序文件。但是,如果你有一個很好的差異/合併工具,那麼它應該能夠區分已更改的內容和已移動的內容。這可以幫助很多。

+0

這很傷心。 2010版和VCPROJ文件必須手工維護,因此版本控制系統不會將其刪除。 – dwj 2010-01-14 20:08:53

+0

同意,+1。 95%的時間,這些變化非常小(例如添加或刪除項目中的1或2個文件)並完美合併。只要你沒有對項目文件進行徹底的改變,並且在自動接受之前仔細查看合併的結果,你就會很好。在極少數情況下,合併不起作用,您應該重新制作您的本地更改。 – 2010-10-23 06:05:38

-1

我們使用差異工具(WinMerge)合併更改。項目文件(大部分)是非常直接的XML。然而,關鍵在於合併時不會有任何意外,因爲良好的溝通是有效的源頭控制的基石。

同步更改到項目只要人們溝通就完全沒問題。

1

這是一個棘手的問題,我認爲在Visual Studio架構中存在一個弱點。我們發現它的方式是根本沒有源代碼管理中的proj文件,並且有一個處理配置設置的構建腳本。

替代方案非常混亂,我們無法保證開發人員之間的一致構建或環境。這導致了大量的下游集成問題,最終我們採取了從源代碼控制中刪除項目文件的嚴酷步驟。

開發者環境可能仍然沒有對齊,但是當他們試圖自己構建東西時就會出現。

1

在這裏使用TFS,但我不認爲它有所作爲。
我們也不鎖,有時候不得不處理合並項目文件。我從來沒有發現它是那麼複雜或很多問題。我們很少遇到無法自動合併的問題,手動合併過程非常簡單。

這裏只有一個警告:經常入住!如果您對項目結構進行重大更改並且不立即對其進行檢查,則這些更改可能會導致後續合併的複雜性增加。如果我對一個項目的結構進行重大改變,我通常會給每個人一個頭。我會要求他們全部檢查他們目前的工作,然後自己照顧合併。

0

選項1和選項2並不相互排斥 - 如果開發人員是初級,則讓他們使用選項1(重新獲取項目文件並重新執行更改),如果這對他們來說更舒適。對於更高級的開發人員,選項2(使用合併工具合併)非常好。

我認爲這是一個目前沒有魔力的情況 - 有時合併是一種痛苦。

相關問題