用于重置工作区的 Team Foundation 客户端命令

Team foundation client command to reset workspace

是否有一个命令(或一系列命令)将 TFVC 工作区与服务器同步,确保磁盘上的内容与签入服务器的内容完全匹配。

tf vc scorch 几乎完成了所需的工作,因为它将客户端工作区与该工作区的服务器版本同步,但是如果在客户端上创建了一个新项目并添加到源代码管理中,尽管尚未检查在中,该项目在烧焦后仍然存在 运行。注意:我使用的是 TF Client 版本的 scorch 而不是 power tools 版本,因为我使用的是 VS2017(scorch 受 VS2013 SP1 支持),如果有什么不同的话。

相关,我知道电动工具包含一个 treeclean 命令;然而,这只会影响不受源代码控制的项目;不是那些添加到版本控制但未签入的。https://adamprescott.net/2011/09/12/clean-tfs-workspaces-with-scorch-treeclean/

我能想到的实现此目的的唯一方法是删除 (tf vc workspace /delete /collection:"https://$MyInstance.visualstudio.com/DefaultCollection" $MyWorkspace) 并重新创建 (tf workspace /new $MyWorkspace /collection:"https://$MyInstance.visualstudio.com/DefaultCollection") 工作区,然后 运行ning 递归获取重新填充新建文件夹。然而,对于我认为很简单的事情来说,这感觉像是一个漫长的过程......

我们使用 TFVC 而不是 Git,因为我们使用的是 Dynamics AX,它本身不支持 Git

我想删除此类对象的原因是因为此脚本将 运行 在构建服务器上,我想确保我们构建的正是签入源代码管理的内容。虽然理论上没有人应该在构建服务器上创建新对象,但我不喜欢依赖这种假设/想让这个脚本尽可能健壮。

我错过了 undo 命令:TF.exe vc undo * /recursive /noprompt

运行 运行 get and then 之前的这个命令确保我的工作区与最新的服务器版本完全匹配。

这是用于将当前工作区与服务器同步的完整代码。注意:此命令假定 tf.exe 的目录包含在 path 环境变量中(或者您可以将 tf 替换为 "...\path\to\tf.exe"),即 current/working目录在源代码管理中映射,并且您的 tf 凭据被缓存(否则包括带有用户名和密码的 /login 参数)。我没有在 get 命令中包含 /all、'/overwrite' 或 '/force',因为无论如何 scorch 都会涵盖这些内容;这里get的主要目的是确保我们的工作区是"pointing at"最新定义的。

tf vc undo * /recursive /noprompt
tf vc get * /recursive /noprompt
tf vc scorch * /recursive /noprompt /diff 

注意:上面的 是多余的/只是确保系统知道使用 tfvc 版本的命令而不是 git版本。