1

我有一个托管在 dev.azure.com(AzureDevops) 上的 GIT 存储库,以及一个托管在私有服务器上的本地 TFVC 存储库(我无法访问机器,我只能访问其 Web 门户)。两者都有相同的代码。

我在 AzureDevops 中为我的 GIT 存储库创建了一个构建和发布管道,运行良好。但是现在,我想从 GIT 存储库更新我的 TFVC 存储库,作为每次在 AzureDevops 中执行管道时的构建/发布管道任务。

没有任何可能发生冲突,因为没有其他人会将更改签入到我的 TFVC 存储库。

有什么办法可以做到这一点?

4

3 回答 3

2

我要做的是向您的 Azure DevOps 服务存储库添加一个远程,它指向您的内部 TFS(只要您的内部 TFS 从 Internet 可见)然后在您的构建中(在服务中),您可以调用 git push internalorigin。现在,如果您从网络上看不到您的内部 TFS,那么就像 Cece 提到的那样,在您的 TFS 服务器上安装一个构建代理,并在构建中创建一个代理步骤,然后调用内联 powershell 添加一个远程,然后调用 git push internalorigin像这样的东西

多代理构建

然后在脚本中你可以做这样的事情

git remote add internalorigin https://TFSSERVER/COLLECTION/_git/REPO
git push -u internalorigin --all

更新:

从 Git 到 TFVC,您的内联脚本会将本地文件从构建复制到本地 TFVC 工作区,然后使用 TF.exe 签入类似这样的内容

copy c:\agent\_work\1\s c:\workspace /Y
cd c:\workspace
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\Team Foundation\Team Explorer\TF.exe" vc checkin /comment:"comment" /noprompt /recursive *

您必须首先从命令行尝试它,确保它可以工作,然后将其放入内联脚本中。

于 2020-04-09T14:43:10.927 回答
1

您可以在 TFS 存储库机器上部署自托管代理。并在 Build/Release 管道中添加脚本任务以更新存储库。

于 2020-04-09T06:29:40.117 回答
1

按照 Etienne 所说的去做,但是如果您的目标 repo 是 tfvc,请将命令行任务添加到使用 tf.exe(而不是 git)上传并提交到您的 tfvc repo 的管道中,并管理工作区。

于 2020-04-09T14:46:18.160 回答