如何在提交代码时同步VSTS和Github仓库?

22

我在Visual Studio Team Services中有一个代码库,我希望与GitHub存储库保持同步。

这使我可以在VSTS中进行主要开发,当合并到主分支时,它将与GitHub同步,并允许其他人在GitHub上进行贡献。当拉取请求合并到主分支时,它也会与VSTS同步。

2个回答

15

首先在 VSTS 上创建一个新的构建,该构建使用应从 VSTS 同步的代码库:

VSTS Build

添加两个 CMD 任务来运行一些 Git 命令。 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选项,以便每当向主分支提交新内容时触发构建运行。

现在也可以以另一种方式完成相同的操作,但将URL更改为目标Visual Studio Online存储库。

push to vsts

请注意,在vsts上使用个人令牌进行身份验证时,URL的身份验证部分需要为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
抱歉,这里有点不太清楚。你为什么要从GitHub拉取代码然后再次推送到GitHub呢?难道不应该从VSTS拉取并推送到GitHub吗? - Jay
前段时间我用过这个,但如果我记得正确的话,是因为在github上可能会进行一些更改,需要在推送之前先拉取这些更改。 - Poul K. Sørensen
嗨,Poul,非常感谢您的回复。是的,我现在明白了这一步骤的原因。但是当我尝试在我的VSTS中运行这些步骤时,它在拉取步骤上不断抛出此错误:fatal: Not a git repository (or any of the parent directories): . 我不确定该怎么办... - Jay
你可以为Azure DevOps Repos制作一个教程吗?这将会是一大帮助。 - Ruben Dario Guarnizo Martinez

1

如果想要使用PowerShell将Github上的所有分支同步到VSTS,请按照以下步骤操作:

首先需要在VSTS中创建一个与Github同名的仓库。

然后添加以下脚本作为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 }


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接