这是我的问题。我有一个构建脚本,它动态地将映射添加到某个工作区,然后在完成时取消映射它们。我担心如果(何时)我的脚本在取消映射完成之前失败,映射将一直保留到下一次并且搞砸了。
所以我想在脚本开始时取消映射整个工作区,然后重新创建它,但问题是我不知道具体可能存在什么。通过 TFS 命令行,我可以很容易地取消映射,但您必须确切知道映射是什么。我的问题是如何最简单、最好地完成这项工作?
谢谢你的帮助!
这是我的问题。我有一个构建脚本,它动态地将映射添加到某个工作区,然后在完成时取消映射它们。我担心如果(何时)我的脚本在取消映射完成之前失败,映射将一直保留到下一次并且搞砸了。
所以我想在脚本开始时取消映射整个工作区,然后重新创建它,但问题是我不知道具体可能存在什么。通过 TFS 命令行,我可以很容易地取消映射,但您必须确切知道映射是什么。我的问题是如何最简单、最好地完成这项工作?
谢谢你的帮助!
我的解决方案是保存这个的输出......
$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
}
}
如果您确定需要保留的工作区中不会有任何待处理的更改,那么将其完全删除并创建一个新的可能会更容易。
或者,如果您确实想坚持使用您的算法,Power Tools 会让它变得更容易:
$ws = get-tfsworkspace .
$ws.Folders | % { $ws.DeleteMapping($_) }