Git поддерживает синхронизацию файлов между двумя репозиториями в DevOps Azure - PullRequest
1 голос
/ 22 июня 2019

У меня есть файл, который мне нужно синхронизировать между двумя репозиториями (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

Я сделал следующее:

  • Создание токена PAT из Org1
  • Создание токена PAT из Org2
  • Создание конвейера с помощью сценария cmdline
  • В скрипте я сделал:

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

Ошибка «Ничего не объединить».

Я "новичок в git", какую команду мне нужно сделать, чтобы синхронизировать файл между репозиториями?

1 Ответ

1 голос
/ 23 июня 2019

Вы не можете просто выполнить слияние, как вы сделали, потому что это 2 разных репозитория, также, вы действительно хотите объединить весь репо?для синхронизации вам нужен только один файл.

Вы можете сделать это с помощью этой логики:

  • Клонирование второго репо
  • Копирование FileA из репо 1 вrepo 2
  • Commit & Push

Я написал небольшой скрипт 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

...