2012-05-14 141 views
0

我在VS 2010快速項目中使用TotoiseSVN客戶端和Assembla後端。我們遇到了VS文件夾(或過濾器)丟失和文件有時未添加到項目的問題。我注意到,當我提交.vcxproj和.vcxproj.filters文件時,從不檢查,即使它們應該改變。所以我手動檢查他們,並告訴其他人,以及他們提交時。TortoiseSVN和Visual Studio Express 2010

如果團隊成員A簽出,只會更改一些代碼,而團隊成員B簽出項目並將文件添加到項目中,則會導致問題。如果團隊成員B然後提交BEFORE團隊成員A,則團隊成員A的項目文件沒有添加新文件團隊成員B,所以現在他的項目將覆蓋團隊成員B簽入的項目文件,現在新添加的文件不在該項目。

除了有驚人的協調之外,我們該如何解決這個問題?

回答

1

CMake是完美的。

如果您還沒有遇到CMake,它可以讓您創建整個項目的構建文件在一個單獨的目錄中的源文件,完全不在svn之外。

存儲庫根目錄中的單個CMakeLists.txt文件將替換當前的所有.vcxproj和.filters文件。

+0

所以這基本上是SVN的標準問題?我不是一個很棒的人,這就是爲什麼我喜歡VS的項目佈局。即使源碼控制代碼是VS的插件,我仍然認爲這可能是一個問題,但我似乎在工作中似乎沒有TFS問題。 – user441521

+0

我認爲這是任何vcs的常見問題。爲了解決vcs衝突,你必須在開發人員之間進行一定程度的交互,但是從vcs中移除構建文件有助於避免其中一些問題擺在首位。我也不是一個人,但CMake語法相對簡單,文檔很好,也許最重要的是,郵件列表幾乎總是有用且快速。 – Fraser

+0

這是有效的,所以我會接受它。我已經發布在Assembla論壇上,他們表示我們應該在提交之前始終進行更新以避免此問題。感謝您的替代想法。 – user441521

1

我懷疑這裏可能發生的事情是開發人員在向他們添加新文件時沒有保存項目文件。 VS2008在默認情況下這樣做了,但我認爲在VS2010中它們不會被保存,除非您明確執行了文件 - >全部保存。因此這意味着變更沒有被執行。一旦你的開發者在進行提交之前養成了保存項目文件的習慣,那麼SVN將在99%的時間內爲你處理所有的合併。剩下的1%時間是有人對項目文件進行了一些更重大的重組,或者有兩個人對構建設置進行了相互衝突的更改。在這些情況下,您必須親自解決。

SVN永遠不會用另一個人覆蓋一個人的變化,它總會嘗試合併。因此,如果您遇到此問題,則表示某人以某種方式回滾了其他人的更改,或者他們沒有在Visual Studio中設置爲在外部更改時重新加載文件的選項:Tools -> Options -> Documents -> Detect when file is changed outside the environment

解決這個問題的一個有效方法是建立一個簡單的構建服務器,例如Jenkins,它會在有一些校驗之後定期啓動構建。如果構建失敗,那麼登錄的人會收到一封郵件,告訴他們他們破壞了構建。您也可以使用顯示器來顯示build status,這使得整個團隊更容易看到破損版本,並希望每個人都能保持修復版本。

相關問題