TFS命令行:如何取消映射整个工作区?

时间:2009-08-28 20:08:41

标签: command-line tfs mapping workspace

这是我的问题。我有一个构建脚本,动态地将映射添加到某个工作区,然后在它通过时取消映射。我担心,如果(当)脚本在取消映射之前失败,映射将保持到下一次并且搞砸了。

所以我想在脚本开始时取消映射整个工作区,并重新创建它,但问题是我不知道具体可能是什么。通过TFS命令行,我可以轻松地取消映射,但您必须确切知道映射是什么。我的问题是如何最简单,最好的方法来完成这项工作?

感谢您的帮助!

2 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分:0)

如果您确定您需要保留的工作区中没有任何待处理的更改,则可能更容易将其完全删除并创建一个新的。

或者,如果您确实希望坚持使用算法,那么Power Tools可以让您更轻松:

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