【问题标题】:How to mirror Github and VS Online?如何镜像 Github 和 VS Online?
【发布时间】:2015-06-03 14:17:49
【问题描述】:

我的代码位于私有 Github.com 存储库中,也位于私有 Microsoft Visual Studio Online git 存储库中。现在我想自动镜像/同步它们。这样当我在 Github 上签到东西时,它也会推送到 VS Online,反之亦然。

我知道如何通过向我的本地存储库添加额外的推送远程来执行此“客户端”。但是也有可能做这个“服务器端”吗?使用 Github Webhooks 或来自 Microsoft 的东西?

因为否则我必须指示所有想要处理代码的人添加两个遥控器,还是我错了?

【问题讨论】:

  • 为什么不选择一个?
  • @DanielMann 因为 VS Online 有构建工具和测试工具,而 github 有很好的 issue-ui
  • VSO 以工作项的形式进行错误跟踪。
  • @DanielMann 有一个备用方案感觉很好,以防其中一个出现中断(比如今天 Github 上的大型 DDOS)。
  • 我也对这个感兴趣。如果您找到解决方案,请不要忘记分享:D

标签: git github tfs azure-devops visual-studio-2015


【解决方案1】:
  1. 将 GitHub 服务端点添加到您的 VSTS(设置 > 服务)
  2. 在您的 VSTS 中使用 GitHub 存储库创建一个空构建定义
  3. 选择存储库选项卡并指定连接、存储库和默认分支。 (设置 Clean 为 true,清除源目录)
  4. 选择触发器选项卡并选中持续集成、批量更改并指定分支过滤器
  5. 选择选项选项卡并选中允许脚本访问 OAuth 令牌

  6. 选择构建选项卡并使用以下脚本添加 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 }

【讨论】:

  • 这非常聪明,但为什么不将构建任务指向 GitHub 存储库呢? (这是一个严肃的问题,不是喷子,我怀疑你正在解决一个我还没有看到的问题。)
  • 我确实做到了。有一些好处。首先,您有 VSTS 作为备份。其次,您可以为利益相关者利用 VSTS 中的更多功能。为什么我们不直接使用 VSTS?我不知道。有些人喜欢 Github 界面。如果你在一个团队中,有时你需要尝试找到一种方法来让事情顺利进行,而不是问为什么。顺便说一句,我什至学会了如何使用 powershell 来解决这个问题。
  • 抱歉,澄清一下:我不是在问为什么要从 GitHub+VSTS 迁移到纯 VSTS - VSTS 允许您在本地构建 GitHub 存储库。 (您不需要使用 VSTS 中的 Git 支持来构建 VSTS。)
  • 再次,我确实将我的构建任务指向 Github。这样做不是为了运行构建。用于其他可以很好地引用 VSTS 中的代码的功能。
【解决方案2】:

我们现在唯一能做的就是使用Zapier,它确实有一个免费计划。就目前而言,据我所知,没有办法通过 Web 挂钩或任何其他方式将两者同步在一起。

我会继续寻找你,如果我发现任何不同的东西,我会更新这个答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 2022-06-24
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多