【问题标题】:Google Cloud Source Repository makes only a shallow clone?Google Cloud Source Repository 只做一个浅层克隆?
【发布时间】:2017-10-19 07:58:46
【问题描述】:

我们的代码托管在 GitHub 上。我们正在使用 Google Cloud Container Builder 来构建和打包我们的软件。为此,我们必须将我们的私有存储库连接到 Google Cloud Source Repository。不幸的是,镜像似乎是一个浅层克隆,因为我们的开发工具正在抱怨它。例如SonarQube 无法为某些文件指责。

文档:

连接的存储库

如果您在 GitHub 或 Bitbucket 上已有存储库,则可以将其连接到您的 Cloud Source Repository。连接的存储库会自动与 Cloud Source Repository 同步。

有没有办法增加克隆的深度?或者如何制作完整的克隆?

【问题讨论】:

  • 你是怎么看到这个错误的,Michal?您是指 SonarQube 指向 GitHub 还是 CSR?你应该把它指向 GitHub。
  • @csells 它是 Gradle 构建的一部分。我们正在使用 Gradle SonarQube 插件。我们目前通过sonar.scm.disabled=true 缓解了这个问题,但是通过摆脱一些 SonarQube 功能来解决这个问题......
  • 我仍然很困惑——你是在将 Gradle SonarQube 插件指向来自 GitHub 或 CSR 的克隆吗?
  • @csells 我们没有将其指向存储库。这是 CI 中的构建步骤。代码在 GitHub 中,在推送时它会被克隆到 CSR,然后被复制到构建它的容器中。在构建过程中,我们调用gradle sonarqube ... -Dsonar.scm.disabled=true。没有把它指向任何东西。它是使用云容器构建器在 cloudbuild.yml 中设置的。

标签: git google-cloud-platform google-cloud-source-repos google-container-builder


【解决方案1】:

Google Cloud Source Repository 仅支持完整克隆。您的存储库确实包含所有分支 (refs/heads/*) 和标签 (refs/tags/*) 的完整历史记录。

如果缺少提交,我的第一个猜测是该提交只能在 refs/pulls/* 等命名空间下找到,而 CSR 不会镜像。

【讨论】:

  • 嗨,肖恩,感谢您的回答。我们的仓库中没有任何“git 魔法”。只有一个分支,我们从中创建功能分支(完成后)合并压缩到 master。 2 人团队(1 个代码,其他审查和合并)。你觉得这有什么问题吗?可以通过任何方式解决吗?
【解决方案2】:

here所述

要在 Git 存储库上构建您的源代码,Cloud Build 会执行存储库的浅层克隆。这意味着只有启动构建的单个提交会在工作区中签出以进行构建。 Cloud Build 不会检查任何其他分支或历史记录。这样做是为了提高效率,因此构建不必为了构建单个提交而等待获取整个存储库和历史记录。

如果您想在构建中包含更多存储库的历史记录,请在构建配置文件中添加构建步骤以“取消浅化”克隆。例如

steps:
- name: gcr.io/cloud-builders/git
  args: ['fetch', '--unshallow']
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 2013-10-11
    相关资源
    最近更新 更多