4

在我们的一个构建中,我们正在启动一些自动化过程,即自动签出和签入一些文件。

这一切都很好,但此时我们正在运行 checkin 命令,如下所示

tf.exe checkin /force /comment:"foo" /noprompt /bypass /override:"bar"

所有具有Pending状态的文件都将被签入。

我想让这个脚本更具体一点,并且只签入我们在构建过程中实际更改的文件(总共 2 个),因此我们确定不会“意外”签入任何文件。

checkin 我已经看到我们可以使用command指定一个文件名,但是这样做我们将在 TFS 中获得 2 个不同的变更集,而不是 1 个。我们真的希望有 1 个变更集,包含两个已更改的文件,因为这些更改属于彼此.

关于如何解决这个问题的任何想法?

少量添加/短期解决方案

目前,我通过指定修改文件所在的文件夹解决了我们的“问题”,看起来像这样

tf.exe checkin "/my/folder/location/" /recurse /force /comment:"foo" /noprompt /bypass /override:"bar"

注意文件夹位置和/recurse添加的参数。

4

2 回答 2

4

您只需用空格分隔文件:

tf.exe checkin file1.ext file2.ext /force /Comment:"foo" /noprompt /bypass /override:"bar"

文档并不清楚这一点,但它可能是 itemspec 的一般规范,可以是多个项目。

请参阅有关结帐的类似问题:Is there a way to check out multiple files from various folder in TFS in a single operation

正如其他人所提到的,您可能会遇到命令行长度超过系统支持的问题,在这种情况下,您可能需要查看其他解决方案。

于 2017-10-16T14:44:24.720 回答
0

cmd.exe对命令的长度有限制。与传递大量长文件名相比,使用版本控制 API 或简单的 'tf checkin /i'(无参数)可能是更好的选择。

如果文件由于更改而自动签出,并且最终文件的内容更改回其原始状态,这是正常的。此时,您将在比较时看到有关相同内容的消息。您还可以使用tfpt uu /noget /r *命令忽略与原始文件相同的文件。您需要安装 TFS Power Tools 才能正常工作。注意:没有 TFS 电动工具 2017。

更多详情请参考以下两个链接:

于 2017-10-16T17:07:05.487 回答