TF:在合并时仅签入选定的文件而不是所有待定更改

时间:2013-12-02 07:21:40

标签: tfs checkin tf-cli

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

  1. TF Get ... / Recursive
  2. TF Merge ... / Recursive
  3. 但是,在检查更改时,“TF Checkin”对话框显示在对话框中选择的所有待处理更改是否使用/递归。

    我想要的是什么:仅选择所选文件夹中的已修改文件,而不是所有待处理的更改。请注意,这是一个随机的事情,因为我的文件夹中有100个文件,因此只应选择在Merge期间更改的文件(这些文件将被修改)。

    我希望解决方案:为我的自动合并流程创建单独的工作区。这将隔离签入过程,并仅选择通过此工作区进行的更改。

    另一种可能性:是否可以检查特定文件夹中的文件并忽略其余的待处理更改?

    Thankx

2 个答案:

答案 0 :(得分:5)

我不确定我是否理解你的问题,但确实只能检查特定文件夹中的文件。为避免签入问题,您应该首先“解决”。例如

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"

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

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

答案 1 :(得分:2)

刚刚发现我们也可以使用Repository Address而不是硬编码路径:

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

会提供相同的设施并阻止我们使用硬编码路径。