2009-08-28 104 views
0

這是我的問題。我有一個構建腳本,它可以動態地將映射添加到某個工作區,然後在完成時取消映射它們。我擔心,如果(當)我的腳本在解映射完成之前失敗,映射將保留下來直到下一次,並搞砸了。TFS命令行:如何取消映射整個工作區?

所以我想在腳本開始時取消映射整個工作區,然後重新創建它,但問題是我不知道具體可能存在哪些內容。通過TFS命令行,我可以輕鬆地取消映射,但您必須確切知道映射是什麼。我的問題是如何完成這個最簡單,最好的方法?

感謝您的幫助!

回答

0

如果您確定在工作空間中不會有任何未決的更改需要保留,則可能更容易將其完全刪除並創建一個新的更改。

或者,如果你想堅持自己的算法,電動工具使它更容易:

$ws = get-tfsworkspace . 
$ws.Folders | % { $ws.DeleteMapping($_) } 
+0

感謝您的。每天學些新東西... – JimDaniel 2009-08-29 22:58:36

0

我的解決辦法,以挽救這個輸出...

$workspace_info = [String[]] (&$tfs_cli workfold /workspace:$workspace_name) 

...成一個字符串數組,然後遍歷它,尋找「$ /」,表示一個映射,取消映射

foreach($wi in $workspace_info) 
{ 
    if($wi.Contains("$/")) 
    { 
     $mapping = $wi 
     #minor string manipulation code left out for brevity 

     &$tfs_cli /unmap $mapping /workspace:$workspace_name 
    } 
}