具有GitHub存储库同步(来回)的Visual Studio Team Services问题

时间:2018-04-24 15:31:00

标签: git visual-studio github azure-devops

我在GitHub中托管了一个开源存储库。 我已将其连接到Visual Studio Team Services。

我只想通过团队服务工作(因此,请连接到我的团队服务帐户和Visual Studio中的项目,而不是GitHub)。 GitHub repo应始终反映推送到VSTS的最新版本的代码。

问题是它只能部分起作用。

我设法将我的GitHub仓库连接到VSTS并导入代码。
可以查看GitHub中对repo的 初始 提交。
可以查看GitHub中每个提交的构建状态(绿色,红色,橙色)。
当我在GitHub中提交代码时,可以触发构建。
可以通过Visual Studio连接,提交和触发构建。

然而

无法在VSTS中查看在GitHub中完成的代码和提交
不能在GitHub中查看在VSTS中完成的代码和提交

所以,似乎这些已连接但不同步。

我在这里查看了这篇文章。这是2岁,所以也许事情已经改变,因为它对我不起作用: How to synchronize VSTS and Github respositories when commits are made 还有这个Visual Studio Team Services - Sync w/ Github Repository

我没有得到的是,当触发构建时,它会提取最新的源代码,我可以看到我的上一次提交描述,但该文件未在VSTS中更新。 enter image description here

无论如何,我接着执行了anwser中描述的步骤,但它一直说“已经是最新的”。这个同步构建成功但没有任何改变 - 无论是在VSTS还是在GitHub中。

enter image description here

要让它们同步,我需要做什么?

2 个答案:

答案 0 :(得分:2)

您只需要两个CI构建来将GitHub repo与VSTS git repo同步。如果您的GitHub repo和VSTS git repo未同步,请先同步,然后添加以下设置以便将来自动同步。

  

我无法在VSTS中看到在GitHub中完成的代码和提交

要解决此问题,您只需要GitHub repo 的 CI构建定义(似乎您已经拥有),当新的更改推送到GitHub仓库时,可以自动触发。

在GitHub CI构建定义中,添加 PowerShell任务以将新的更改从Github repo推送到VSTS git repo。 PowerShell脚本如下:

git checkout $(Build.SourceBranchName)
git remote add vsts https://Personal%20Access%20Token:PAT@account.visualstudio.com/project/_git/repo
git push vsts $(Build.SourceBranchName)

注意:

  • 应使用GitHub仓库中的任何分支指定CI构建。因此,您可以为分支过滤器指定*

    enter image description here

  • 对于PowerShell任务,您应取消选择标准错误选项失败。

    enter image description here

  

我无法在GitHub中看到在VSTS中完成的代码和提交

要解决此问题,您需要 VSTS git repo 的另一个CI构建定义,以便在将新更改推送到VSTS git repo后,将自动触发构建。

您可以通过PowerShell任务将更改从VSTS git repo推送到GitHub仓库:

git checkout $(Build.SourceBranchName)
git remote add github https://username:password@github.com/username/repo
git push github $(Build.SourceBranchName)

注意:您还应指定带有*的分支过滤器,以匹配VSTS git repo的所有分支。并且还需要为PowerShell任务取消选择“标准错误时失败”选项。

答案 1 :(得分:1)

据我所知,您提供的屏幕截图中,您没有对您的VSTS存储库执行任何。您正在同步的回购来自GitHub。你正在推动和撤出的回购也是GitHub。

如果您没有克隆或以其他方式与您的VSTS存储库进行交互,那么您没有看到任何事情发生就不足为奇了。您希望构建使用VSTS存储库作为其源。然后,您在构建中运行的命令将从GitHub中提取最新的更改,并推送来自VSTS的最新更改。