2015-02-11 72 views
3

我想在工作區中獲取當前變更集標識。這個問題在「Get current changeset id on workspace for TFS」中解決。如果更改集僅包含刪除,則TF.EXE歷史記錄將被關閉

tf history . /r /noprompt /stopafter:1 /version:W 

這在幾乎所有情況下都可以使用。但是,如果當前變更集僅包含來自TFS的刪除,則失敗。這不一定changesetId - 1,但取決於我查詢的文件/文件夾的歷史記錄。 如果當前變更集只刪除了幾個文件,則將更改集prio更改爲我查詢的文件/文件夾歷史記錄中的當前變更集。

同樣的事情發生時,我使用是在http://blogs.msdn.com/b/buckh/archive/2009/01/26/how-to-determine-the-latest-changeset-in-your-workspace.aspx

提到這是TFS的錯誤TFS的API調用?有沒有人有辦法解決嗎?

在此先感謝。

回答

0

這裏的關鍵是您指定的版本是W,即工作區。歷史查詢正在查找您在工作區中所做的更改。問題是你永遠不能「擁有」一個所有文件被刪除的變更集 - 它們不會在你的工作區中。獲得工作的方式是計算您需要的內容並將其與您擁有的內容進行比較(全部使用SQL),並將差異列表發送給客戶端。因此,服務器上沒有記錄您的客戶已經處理這些刪除的事實。爲了解決這個問題,我們必須運行get邏輯來檢查這個角落案例。所以,你是對的,在這種情況下是錯誤的。我會問球隊,但除非有更好的方法來解決這個問題,我沒有想到,我預計不會改變它。

+0

我已經實現了API的解決方法。當我從QueryHistory()得到結果時,我檢查比變更集更新的任何變更集。如果較新的更改集只包含刪除,則檢查刪除的文件是否存在於本地磁盤上。我一直重複這一點,而變更集只包含刪除操作,並且文件不在本地磁盤上。我發現的只有刪除且沒有文件的最後一個變更集必須是正確的。 – Quido 2015-02-25 22:00:11