Git在Azure DevOps中的2个存储库之间保持文件同步任务

时间:2019-06-22 07:30:00

标签: git azure-devops azure-pipelines

我有需要在2个存储库(2个不同的组织)之间保持同步的文件

  1. https://org1@dev.azure.com/org1/XProject/_git/MyRepoX
  2. https://org2@dev.azure.com/org2/YProject/_git/MyRepoY

RepoX和RepoY都有一个共同的文件“ FileA”(以保持同步)

发生更改时,FileA -Trigger管道并将MyRepoX / FileA“合并”到MyRepoY / FileA

我已经执行以下操作:

  • 从Org1创建PAT令牌
  • 从Org2创建PAT令牌
  • 使用cmdline脚本创建管道
  • 在脚本中,我做了:

    • git clone https://@dev.azure.com/org1/XProject/_git/MyRepoX
    • git merge https://@dev.azure.com/org1/YProject/_git/MyRepoY

错误“没有要合并的内容”。

我是“ git新手”,我需要执行什么命令来使文件在存储库之间保持同步?

1 个答案:

答案 0 :(得分:1)

您不能像合并那样仅仅进行合并,因为它是2个不同的存储库,而且,您真的要合并整个存储库吗?您只需要同步一个文件即可。

您可以通过以下逻辑来实现:

  • 克隆第二个仓库
  • FileA从仓库1复制到仓库2
  • 提交并推送

我编写了一个可以运行的小型PowerShell脚本:

cd $(Agent.BuildDirectory)
git clone https://PAT-HERE@dev.azure.com/{organzition}/{project}/_git/{repo-name}
cd {repo-name}
git checkout branch-name # if the synced file not in master
# Assuming the synced file name is "test.txt" and he exists in the folder "common"
Copy-Item $(Build.SourcesDirectory)\common\test.txt $(Agnet.BuildDirectory)\{repo-name}\common -Force
# If you use Hosted agent you need to configure the email & address
git config --globa user.email "Build@AzureDevOps.com" 
git config --global user.name "Azure DevOps Build"
git add common/test.txt
git commit -m "Sync test.txt"
git push

现在创建2个管道,在每个管道中仅触发您要同步的公共文件:

enter image description here

使用上述脚本:

enter image description here

结果:

enter image description here

enter image description here