【问题标题】:Adding items in bulk to Azure DevOps using tf commandline使用 tf 命令行将项目批量添加到 Azure DevOps
【发布时间】:2023-03-06 22:08:02
【问题描述】:

各位,

我们的其中一款产品依赖于我们每月收到更新的第三方软件。收到的软件在包含大约 100-150K 文件的复杂文件夹结构中包含各种文件和二进制文件。我们需要将新项目添加到我们的版本控制中,以便我们可以将其包含在我们的构建管道中。

我们通过 Powershell 脚本运行整个文件夹结构,并为每个(相关)文件执行“tf.exe add file”。目前这需要大约 14 小时。我们已经使它成为多线程的,但这似乎并没有对处理时间产生很大影响。 “tf.exe add”-命令只是慢慢来,据我们所知,不要并发运行。

TF.exe add fileOne.dll
TF.exe add fileTwo.png

我们还尝试优化它在一个命令中处理多个文件

TF.exe add fileOne.dll fileTwo.png

但一直无法让它发挥作用。根据docs可以指定多个文件

itemspec - 指定要添加的项目的范围。您可以指定多个 itemspec 参数

但是我们的 TF.exe 错误

TF.exe: C:\workfolder\fileOne.dll fileTwo.png : 没有文件匹配。

我的问题:

  1. 为什么不让我们使用“tf.exe add”添加多个文件/项目规范?
  2. 有没有更有效的方法来加快向 DevOps 批量添加文件这一过程?

【问题讨论】:

  • 不是每次都将文件添加到源代码中,而是为什么不将第 3 方的东西转换为 NuGet 包,然后让它在编译时将其内容动态添加到工作区,例如任何其他 NuGet 包。因此,您不必对它进行版本控制,因为它是第 3 方的东西。这就是我对 RightAngle 所做的。无需将整个 Solarc 库签入到源代码管理中,只需将其转换为 NuGet 包即可。

标签: tfs azure-devops tfvc azure-repos


【解决方案1】:

itemspec 是一个 glob 格式 and explained here

您可以使用多个项目规范,但每个项目都必须在前面加上路径(或植根于当前目录),因此:

tf vc add C:\workfolder\fileOne.dll C:\workfolder\fileTwo.png

或者

c:
cd workfolder
tf vc add fileOne.dll filetwo.dll
tf vc add .\fileOne.dll .\filetwo.dll                         | equivalent of the above

但是,如果您想要在需要时将所有文件添加到特定文件夹中,那么与/recursive 结合使用的通配符选项就是您的朋友:

tf vc add c:\workfolder\* /recursive

为了进一步加快进程,您可以切换到本地工作区,在这种情况下,tf vc add 命令不需要与服务器对话来预先进行更改,它只在本地注册。然后checkin命令就能将整批修改过的文件批量发送到服务器。

您可以使用以下命令切换工作区:

tf vc workspace /location:local

【讨论】:

    猜你喜欢
    • 2021-04-24
    • 2012-08-09
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2015-03-17
    相关资源
    最近更新 更多