如何在提交时同步VSTS和Github存储库

时间:2016-04-23 17:20:23

标签: github azure-devops

我在visual studio团队服务中有一个存储库,我希望与github存储库保持同步。

这允许我在VSTS中进行主要开发,当合并到master中时,它将同步到github并允许其他人在github上进行贡献,当Pull请求合并到master时,它会同步到VSTS。

2 个答案:

答案 0 :(得分:13)

首先在VSTS上创建一个新版本,该版本使用应该从VSTS同步的存储库:

VSTS Build

添加两个将运行一些git命令的CMD任务。 git pull remote enter image description here

其中最后一个需要来自Github的个人访问令牌。

在图像中,两个CMD任务都使用GIT工具和以下两个命令:

pull https://github.com/s-innovations/MessageProcessor.ServiceFabric.git master

push https://$(githubpersonaltoken)@github.com/s-innovations/MessageProcessor.ServiceFabric.git head:master

启用CI选项,以便在将某些内容提交给master时触发构建运行。

现在同样可以通过另一种方式完成,其中新构建以相同的方式进行,但将URL更改为目标visual studio在线存储库。

push to vsts

请注意,在vsts上使用个人令牌时,网址的身份验证部分需要https://:token@,而github上的身份验证部分只需https://token@

push https://$(vstspersonaltoken)@sinnovations.visualstudio.com/DefaultCollection/S-Innovations%20MessageProcessor/_git/messageprocessor-service-fabric head:master

2017年8月更新

他们在VSTS上更改了它,如果冒号存在则会失败。以上说明已更新。

答案 1 :(得分:1)

对于想要使用powershell

将所有分支从Github同步到VSTS的人

您需要先在Github中使用相同名称在VSTS中创建一个repo。

添加PowerShell流程作为以下脚本。它应该适用于任何帐户和回购。

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 }