我在visual studio团队服务中有一个存储库,我希望与github存储库保持同步。
这允许我在VSTS中进行主要开发,当合并到master中时,它将同步到github并允许其他人在github上进行贡献,当Pull请求合并到master时,它会同步到VSTS。
答案 0 :(得分:13)
首先在VSTS上创建一个新版本,该版本使用应该从VSTS同步的存储库:
其中最后一个需要来自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在线存储库。
请注意,在vsts上使用个人令牌时,网址的身份验证部分需要https://:token@,而github上的身份验证部分只需https://token@。
push https://$(vstspersonaltoken)@sinnovations.visualstudio.com/DefaultCollection/S-Innovations%20MessageProcessor/_git/messageprocessor-service-fabric head:master
他们在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 }