2016-09-09 75 views
1

我在TFS中的一個項目在合併並提交它們後,在分支之間不斷顯示變更集。我使用了Track Changeset功能,並單擊Visualize按鈕查看是否合併了更改。它顯示它已合併但具有不同的背景顏色和星號。我檢查了幫助,它給出了這樣的解釋:如何解決TFS中部分合並的變更集?

如果分支已經收到一些(但不是全部)在變更的變化,分支用圖案填充,和一個星號如下內變更號碼該分支。例如,上圖顯示,只有一些在變更38的變化被合併到測試分支 Track Changes Help

我不明白是怎麼回事,我只部分地合併那些變更。也許我在完成合並時沒有最新版本,但它發生在很多變更集上,而且這隻發生在這個分支的項目文件夾中。

有沒有辦法找出什麼沒有合併併合並它,以便變更集將退出作爲合併候選人顯示出來?

回答

1

A 部分合並記錄爲只有變更集中的某些更改合併到目標。有兩種常見的情況下面,你可以用部分合並結束:

方案1:撤消一些懸而未決的變化,當你正在檢查的合併後的文件

在這種情況下,儘管我們已經合併變更DevMain,它仍然是合併候選人。這是由於合併引擎檢測到該變更集中仍然存在一些變化,而這些變更未從Dev傳播到Main。

方案2:演出在功能層面的合併無法從分支的頂部

例如:假設您擁有兩個分支主要開發,他們每個人都有兩個文件夾( Feature1和Feature2),每個功能文件夾包含一個文件。我們從功能文件夾(Dev\Feature1\feature1.txtDev\Feature2\feature2.txt)編輯這兩個文件並檢入更改。

如果在特徵1級進行合併操作。(Changset142→ Changeset143)您將在一個只在Feature1文件夾中所做的編輯將被合併Pending Changes窗口通知。完成合並。

如果你看一看的優點1文件夾,你會看到的合併歷史,從變更142所有的改變都被合併到變更143

但是,如果你看一看主要的合併歷史您將看到變更集142中只有部分已合併到變更集143中。這是正常的,因爲變更集142有一些更改 - 即編輯Feature2文件夾中的文件 - 未交付。


在部分合並的情況下,找出哪些更改已合併以及哪些更改從變更集中省略。實現此目的的唯一方法是對diff部分合並的變更集的內容以及作爲合併結果生成的變更集的內容。更詳細的信息可以參考本博客:Partial Merges in TFS – A Guide


更新

你可以做一個discard merge。 這必須從命令行完成。打開Developer command prompt, ,然後導航到任一分支下的文件夾(即將 導航到受影響的 workspaces之一)。 然後鍵入:

tf merge /r /discard "$/Project/B1" "$/Project/B2" /v:C12345~C12345 

這將需要識別的變更(在這種情況下,它被變更集 #12345),並更新它作爲合併到目標分支(分支B2)。目標文件將被檢出,但不會被更改 - 您只需檢查它們即可完成操作。之後, 變更集將不再顯示爲合併候選人。您可以同時指定 一組變更集合,但它們應該是 連續的。

注意,這樣做後,變更會偶爾還是會出現 作爲合併候選 - 這是相當罕見的與最新 版本的TFS的,它幾乎是不可能解決(除非你是 運行你自己的地方安裝TFS並想讓你的手在數據庫中非常髒 )。如果您最終遇到了其中一個被拒絕的變更集,請忽略它。

來源: Finding merge candidates in TFS

+1

我跑的變更集的比較,看看有什麼不同。列出了4個差異。來自中繼分支中目標40622的活動分支的變更集40621。現在我發現了這些差異,我該如何解決這個問題,以便變更集40621停止顯示爲合併候選人? –

+0

您可以執行[放棄合併](https://msdn.microsoft.com/en-us/library/bd6dxhfy%28v=vs.100%29.aspx)。它不執行合併操作,但會更新合併歷史記錄以跟蹤合併發生的情況。這會丟棄用於特定合併的變更集。** –

+0

不幸的是,未從我的待處理列表中刪除變更集。更改集31263位於待從Trunk合併到Active的待更改列表中。我運行了'tf merge/discard/version:C31263 $/Trunk/Project1 $/Active/Project1/recursive'。我檢查了Active上的合併,然後再次調用合併對話框,31263仍在列表中。 –

相關問題