【问题标题】:Export git changesets to a closed environment repo将 git 变更集导出到封闭环境仓库
【发布时间】:2013-05-17 16:32:11
【问题描述】:

希望有人可以帮助解决这个问题,因为它可能会阻碍我们将开发环境切换为使用 git。

我们将在一个共享的网络环境中拥有多个 git 存储库。 git的非常标准的用法。但是,我们还需要一个隔离的环境,源需要复制到该环境。这基本上是通过刻录 CD 并将源代码放入环境中来完成的。我们的一些代码库非常大,因此我们的 CM 人员不希望每次需要将源代码带入封闭环境时都必须复制整个 repo。

我们目前使用 ClearCase,它能够从外部存储库中导出增量以及提交信息,然后将其导入到隔离存储库中。代码永远不会离开隔离的 repo 以重新导入外部 repos。

这个功能在 git 中可用吗? IE。在外部 repo 上,导出变更集,将其刻录到 CD 上,将它们放入隔离环境并将这些变更集(连同提交信息)应用到该 repo?

感谢您的帮助!

【问题讨论】:

  • 听起来你想创建一个补丁:stackoverflow.com/questions/6658313/….
  • @FelixKling 听起来确实如此。谢谢!
  • 感谢@twalberg,但看起来这将拉取特定修订(或修订列表)的所有源。我们的一些源代码库非常大,所以我们只想要增量。我认为补丁解决方案可能更符合我们的要求。

标签: git


【解决方案1】:

正如 twalberg 建议的那样,使用 git bundle。您可以将整个分支 branch-name 捆绑在一起:

git bundle create bundlefile branch-name

或者只是last-release-version标签之后的增量:

git bundle create bundlefile-delta last-release-version..branch-name

捆绑包可以比补丁更有效地传输并且更易于应用:

git fetch bundlefile-delta branch-name:branch-name

【讨论】:

    【解决方案2】:

    一种方法是 format-patch

    $ git 格式补丁 8fbee89..master 0001-删除-疯狂-折叠-操作-替换-用-saner-.patch 0002-Make-array-construction-use-LOADVN-slightly-faster.patch 0003-EACH-need-not-make-a-backtrack-point-on-the-last-ite.patch

    每个文件中都包含这样的差异和重要信息

    来自 bc42812715fb56e72717bf18809dd9ba59771b3a 2001 年 9 月 17 日星期一 00:00:00 来自:斯蒂芬·多兰 日期:2013 年 5 月 16 日星期四 15:07:53 +0100 主题:[PATCH 1/3] 删除疯狂的“折叠”操作,替换为 saner

    或者,如果您使用 GitHub,它可以为您制作!

    github.com/stedolan/jq/compare/8fbee89...master.patch

    然后将补丁文件带到“锁定”区域或其他任何地方,然后运行

    git am 0001-Remove-the-insane-fold-operation-replace-with-saner-.patch
    

    等等。

    How do patches work in Git?

    【讨论】:

      猜你喜欢
      • 2022-08-20
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 2023-03-27
      • 2013-10-03
      • 1970-01-01
      相关资源
      最近更新 更多