徹底移除已簽入TFS的項目

保留完整版本變更歷程是版控系統的核心精神之一,檔案項目一旦簽入,就算使用者要求刪除,項目從清單上消失,仍可透過歷史記錄還原每一個曾簽入的版本。

實務上,偶爾會發生不慎誤將不該簽入內容丟上版控的狀況(例如:誤簽入個資或機密敏感內容),此時版控對保留完整軌跡的堅持變成缺點,不管刪除或 Rollback 都無法防止他人透過歷史記錄還原內容。

非常狀況只能用非常手段,在 TFS 上遇此種狀況,tf.exe 工具有個 destroy 指令可以解決問題。

語法範例如下:

tf destroy $/src/path/filename.ext /collection:"httq://tfs-server:8080/tfs/collectionName"

執行者必須具備 Team Foundation Administrators 管理者群組身分,確認刪除後檔案便會從 TFS 移除,從 Changeset、Pending Change、Merge History、Branch History 徹底消失,不留半點痕跡。參考

在 destroy 前,建議先依 TFS 標準做法將該項目刪除。否則可能出現類似下圖的奇特狀態,tfs-destroy-test.txt 已從 Source Controller Explorer 消失,但 Solution Explorer 裡它仍存在且有藍色鎖頭,按右鍵 View History 也能查詢,但查不到任何簽入簽出記錄。

若 destroy 時其他人更動過該檔案而處於 Pending Change(暫止變更)狀況,將出現如下警示:

此時可加上 /preview 參數,tf.exe 將不執行動作,只顯示檔案被哪些人列為 Pending Change。優雅的做法是通知相關人員自行 Undo 後再 destroy;粗暴一點直接刪除也成,該項目將從眾人的 Pending Change 清單消失,可能讓當事人一頭霧水以為撞鬼。

最後提醒,destroy 非正常操作,只能視為修補錯誤簽入動作的迫不得已手段,並有遺失修改歷程、破壞資料一致性的副作用,只能由管理者執行,但遇到不計代價必須抹除資料的情境,算是唯一解法。

歡迎推文分享:
Published 06 February 2017 10:59 PM 由 Jeffrey
Filed under:
Views: 3,085



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<February 2017>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
2627281234
567891011
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication