3

使用 TFS 的命令行实用程序 tf.exe,我通过简单的步骤在批处理文件中自动使用 tf.exe 合并两个分支的过程:

  1. TF 获取... /递归
  2. TF 合并.../递归

但是,在签入更改时,“TF Checkin”对话框会显示对话框中选择的所有未决更改,无论是否使用 /Recursive。

我想要什么:只选择我选择的文件夹中修改过的文件,而不是所有未决的更改。请注意,这是一件随机的事情,因为我的文件夹中有 100 个文件,所以只有在合并期间更改的文件应该被选中(这些文件肯定会被修改)。

我期望的解决方案:为我的自动合并过程创建一个单独的工作区。这将隔离签入过程并仅选择通过此工作区所做的更改。

另一种可能性:是否可以签入特定文件夹中的文件并忽略其余未决更改?

谢谢

4

2 回答 2

6

我不确定我是否理解您的问题,但确实可以仅签入特定文件夹中的文件。为避免签入问题,您可能应该先进行“解决”。例如

tf.exe get /r c:\src\branch1\project1 c:\src\branch2\project1

tf.exe merge c:\src\branch1\project1 c:\src\branch2\project1 /r /noprompt

tf.exe resolve c:\src\branch2\project1 /r /auto:acceptTheirs /noprompt
tf.exe checkin c:\src\branch2\project1 /r /noprompt /override:"done by script"

/noprompt从脚本/自动化进程运行 tf.exe 时,您应该始终这样做。这是为了避免弹出窗口。在我提出的解决/auto:acceptTheirs方案中,当发生冲突更改时,它将从源分支中获取更改。这里有几种不同的选择,您必须考虑哪种适合您的目的。签入上的 /override 将覆盖任何签入策略,这可能(但不一定)是脚本中的一个好主意。

如果可能,我会尽量避免每次创建新工作空间的方法。创建和删除工作区是一个繁重的过程,根据我的经验,很难跟踪所有工作区,因此我通常会得到大量需要删除的未使用工作区。

于 2013-12-02T07:37:23.067 回答
2

刚刚发现我们也可以使用存储库地址而不是硬编码路径:

tf checkin $/MainRep/Playground/MyFolder/HTMLLogViewer /r

将提供相同的便利,并会阻止我们使用硬编码路径。

于 2013-12-02T11:51:04.223 回答