2012-04-25 105 views
2

我正在使用ankhsvn與我的朋友在Visual Studio中的項目上進行協作。使用Visual Studio和Ankhsvn處理csproj文件的頻繁更改

雖然我們沒有對相同的源文件進行更改,但我們都在對同一個項目進行頻繁更改。

我很難理解如何告訴顛覆處理VS在.csproj.sln文件中的自動更改。在我看來,我有兩個選擇:

  1. 包括普通版本控制下每次我更新之前承諾,我將得到一個衝突,因爲我的朋友在我面前COMMITED並做了一些改動.csproj.csproj文件,然後文件。
  2. .csproj文件放在忽略列表中,然後我會遇到問題,因爲我的項目不會包含我朋友所做的所有更改。

因此,在這兩個方面,我必須要麼解決衝突和解決問題的依賴性等

有沒有更簡單的方法來做到這一點?

謝謝。

回答

4

根據我的經驗,#1是您唯一的選擇。由於你們兩個都在定期編輯.csproj,並且.csproj的性質是你的兩個改變總會在文件的同一個區域出現,所以你將會發生衝突。

絕對避免#2。我只能認爲你會這樣做,因爲你擔心不正確地解決衝突,並且你發現在VS中使用「添加引用」會更容易。我不會這樣做,因爲大多數.csproj文件中的衝突解決方案(我假設你們都定期添加依賴關係)相當於使用「在他們之前使用我的」或反過來在TortoiseMerge中使用。如果您沒有使用合併工具並且正在使用文本編輯器,我建議您嘗試使用TortoiseSVN,以便您可以輕鬆地合併。

+0

根據我的經驗,這些衝突可以最小化,如果項目是技術上記錄良好的項目。所有的引用,類,視圖/頁面/表單都應該被1個用戶/開發人員添加到項目中,其他所有人都會更新他們的項目,他們會發現項目中已經設置的所有東西,打開類/視圖/表單/頁面,代碼和承諾。但我們都知道在開發過程中,我們需要在項目中添加很多東西,並且可能會導致衝突的策略/邏輯更改,但仍然可以通過此方法將其最小化...... – 2013-08-23 06:33:24

2

我相信你的問題是由設計。您不應該排除項目文件。

實際上,這樣做的智能方法是將代碼分成多個項目/模塊/庫。在這種情況下,你的項目文件可能會改變,但由於你在另一個工作,這不是一個問題。所有內容都保存在解決方案文件中,只有在添加/刪除項目時纔會更改。 當然,這意味着你需要在實施它們之前規劃你的軟件項目並定義模塊,但在做之前的思考很少是不好的選擇。

編輯:你可能想要考慮一個不同的版本控制系統。像mercurial或git這樣的應用程序應該有所幫助,因爲您只需要拉/合併所需的更改。

+0

僅僅因爲他正在修改.csproj而沒有意味着他沒有使用不同的庫和模塊。他們正在向.csproj添加依賴項,導致將添加到.csproj中。所以,即使他們使用模塊,他們也會以衝突結束。 – Dave 2012-04-25 13:22:20

+0

你是對的,但他也不會說他使用多個項目。然而,對csproj文件的頻繁更改通常只會在多方參與同一項目時導致衝突。每個項目都存儲自己的引用afaik,因此一個項目中的更改不應該影響其他項目。拆分項目可能畢竟... – konqi 2012-04-25 13:28:11

+0

我不知道他的項目周圍的情況,但IMO完全合理,兩個開發人員需要在同一個項目上工作並添加他們需要的任何參考。 – Dave 2012-04-25 13:29:24

0

我想提出處理svn下的.sln和.csproj文件的快速建議。

從全面更新您的項目開始。

尋找一個鎖定機制,在該機制中,您獲得對該文件的鎖定,而其他人無法對其進行更改。如果您像我一樣使用TortoiseSVN,請參閱https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-locking.html

現在快速正常添加文件(將它們添加到文件樹中並告訴項目包含它)。

然後提交新文件以及編輯後的.sln和.csproj文件。

如果您的svn在提交後沒有釋放鎖定,請立即發佈。

現在你應該清楚了。您知道解決方案和項目文件適合您。但是,如果他或她在更新到新的.sln或.csproj之前編輯.sln或.csproj,它們可能不適用於您的朋友。在這種情況下,他或她可能不得不刪除他們的.sln或.csproj,加載你的,然後處理剩下的。 (我不知道他們是否必須將他們的文件添加到解決方案或項目中,或者Visual Studio會爲他們做這件事。)

請注意,您可以添加空文件,以便項目是意識到他們並承諾這一過程。這很快,所以別人不可能同時進行編輯。之後您可以隨時編輯文件。如果你還沒有寫任何東西來依賴它,它不應該需要內容。如果文件需要一些內容以便它不會破壞解決方案,那麼請考慮爲該文件提供一些有待隨後替換的有效內容。

如果有人有其他建議,我很樂意聽到他們。然而,這篇文章目前是3歲......