Team foundation客户端命令重置工作区

问题描述 投票:0回答:1

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

tf vc scorch几乎完成了所需的工作,因为它将客户端工作区与服务器的工作空间版本同步,但如果在客户端上创建了一个新项目并添加到源代码管理中,但尚未签入,则在运行scorch后该项目仍然存在。注意:我正在使用TF客户端版本的scorch而不是电动工具版本,因为我正在使用VS2017(VS2013 SP1支持scorch),这应该有什么不同。

相关,我知道电动工具包括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")工作区,然后再运行递归重新填充新文件夹。然而,对于我认为很简单的东西而言,这感觉就像是长途跋涉......

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

我想删除这些对象的原因是因为这个脚本将在构建服务器上运行,我希望确保我们在源代码控制中确切地构建了什么。虽然理论上没有人应该在构建服务器上创建新对象,但我不喜欢依赖于这个假设/想要使这个脚本尽可能健壮。

azure-devops tfvc tfs-power-tools tf-cli
1个回答
0
投票

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

在运行get然后运行scorch之前运行此命令可确保我的工作区与最新的服务器版本完全匹配。

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

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

注意:上面的vc是多余的/只是确保有可能出现歧义,系统会知道使用tfvc的命令版本而不是git版本。

© www.soinside.com 2019 - 2024. All rights reserved.