2014-03-26 25 views
0

我正在編寫一個工具來自動化文檔和我們網站的代碼部署,並且在測試時遇到了一個異常現象,並引發了我對變更集的理解。TFS Changeset只應該在解決方案中引用文件嗎?

我所看到的是一個參考文件實際上不是解決方案的一部分的變更集(儘管在某一點上它們是)。

是最好的,我能確定這是一連串的事件(除了最後一步發生之前,我加入公司,所以這是所有從源代碼控制歷史推斷):

  • 的文件夾添加到一個包含大約十幾個txt文件的項目,這些文件充當電子郵件的模板,並且這些文件被簽入TFS
  • 2周後,4個txt文件從項目中刪除但未被物理刪除
  • 2年後開發人員需要更新電子郵件模板並更改文件夾中的所有txt文件,包括4這是不是「」項目,導致變更集X

當我看着變更集X及其變化的列表,它包括一個「編輯」到每個txt爲他改變

  • 開發支票包括四個已刪除文件的文件。我已經檢查過CSPROJ文件,並且在更改集創建時肯定沒有提及已刪除的文件。

    當我的代碼遍歷變更集中的所有更改時,它會嘗試將更改後的文件結合到它所屬的項目中,以便確定哪些文件需要作爲更改的結果進行部署 - 即如果它的.html或.jpg那麼它只是被複制,但如果它的源代碼,那麼我需要部署從文件編譯的關聯二進制文件)。所以當它發現這些文件並試圖找到他們屬於它的項目失敗時。

    變更集應該引用這些刪除的文件,還是TFS中的錯誤?或者,當代碼從兩次更改之前的兩年的某個時間從TFS 2008遷移到TFS 2012時,會發生什麼?如果它不是bug,那麼在什麼情況下你會希望TFS跟蹤對不在項目中的文件的更改?

    我試圖通過設置一個全新的項目並將其添加到源代碼控制,然後添加,刪除和編輯相關的文本文件,但我不能讓它以相同的方式行爲複製它。

  • 回答

    0

    TFS是正確的。 Visual Studio Solutions是一個很好的界面,用於在版本控制中可視化地管理一部分文件。通常有多個解決方案並在多個位置更改文件,但仍然是我想記錄爲單個更改集的單個邏輯更改。

    +0

    嗯..我明白,但我不知道它回答我的問題。 –

    +1

    好吧,我已經制定出你的意思了。重要的詞是「子集」。我猜想關鍵在於變更集只與源代碼管理相關,並且只與巧妙地與Visual Studio解決方案相關。根據我的個人經驗,我的團隊將所有相關文件添加到解決方案的項目中,因此存在1-2-1的相關性掩蓋了此問題。發生這種情況的原因是,將文件添加到源代碼管理下的項目會將其選定爲源代碼管理,但將其從項目中刪除並不會將其從版本控制中刪除,因此破壞了相關性。 –

    +0

    這是放置它的好方法。 –

    相關問題