J'ai un référentiel dans les services de l'équipe Visual Studio que je souhaite garder synchronisé avec un référentiel github.
Cela me permet de faire mon développement principal dans VSTS et lors de la fusion avec master, il sera synchronisé avec github et de permettre également à d’autres de contribuer sur github et, lorsque ces demandes seront fusionnées dans master, elles seront synchronisées avec VSTS.
Commencez par créer une nouvelle version de VSTS utilisant le référentiel devant être synchronisé à partir de VSTS:
ajoutez deux tâches CMD qui exécuteront des commandes git .
où le dernier des deux a besoin d'un jeton d'accès personnel de Github.
Dans les images, les deux tâches CMD utilisent l'outil GIT et les deux commandes suivantes:
pull https://github.com/s-innovations/MessageProcessor.ServiceFabric.git master
et
Push https://$(githubpersonaltoken)@github.com/s-innovations/MessageProcessor.ServiceFabric.git head:master
Activez l'option CI pour que la construction soit exécutée chaque fois que quelque chose est envoyé au maître.
La même chose peut maintenant être faite dans l'autre sens, où une nouvelle construction est faite de la même manière mais avec les URL modifiées pour cibler le référentiel en ligne Visual Studio.
Notez que lorsque vous utilisez des jetons personnels sur vsts, la partie authentification de l'URL doit être https: //: token @ et sur github c'est juste https: // token @ .
Push https://$(vstspersonaltoken)@sinnovations.visualstudio.com/DefaultCollection/S-Innovations%20MessageProcessor/_git/messageprocessor-service-fabric head:master
Ils l'ont changé à VSTS. Par exemple, si les deux points sont présents, il échouera avec auth. La description ci-dessus a été mise à jour.
Pour tous ceux qui veulent synchroniser toutes les branches de Github à VSTS en utilisant powershell
Vous devez d'abord créer un dépôt dans VSTS avec le même nom dans Github.
Ajoutez un processus PowerShell en tant que script suivant. Cela devrait fonctionner avec n'importe quel compte et repo.
git branch -r | findstr /v "\->" | ForEach-Object {$br=$_.TrimStart(); git branch --track $br.TrimStart("Origin/") $br}
$repoName = "$env:BUILD_REPOSITORY_NAME".split('/')[1]
$repoUri = "$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI".Substring(8)+ "_git/$repoName"
git remote add vsts "https://$env:SYSTEM_ACCESSTOKEN@$repoUri"
git branch -r | findstr /v "\->" | ForEach-Object { $br=$_.TrimStart(" Origin/"); git Push -u vsts $br }