将git变更集导出到封闭的环境仓库

时间:2013-05-17 16:32:12

标签: git

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

我们将在共享的网络环境中拥有多个git repos。相当标准的git用法。但是,我们还需要一个需要复制源的隔离环境。这基本上是通过刻录CD并将源带入环境来实现的。我们的一些代码库非常大,所以我们的CM人员不希望每次需要将源都带入封闭环境时复制整个repo。

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

这个功能在git中可用吗? I.E.在外部仓库,导出变更集,将它们刻录到CD上,将它们带入隔离环境并将这些变更集(以及提交信息)应用于该仓库?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

正如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

答案 1 :(得分:1)

这样做的一种方法是 format-patch

$ git format-patch 8fbee89..master
0001-Remove-the-insane-fold-operation-replace-with-saner-.patch
0002-Make-array-construction-use-LOADVN-slightly-faster.patch
0003-EACH-need-not-make-a-backtrack-point-on-the-last-ite.patch

每个文件中包含的差异和很好的信息就像这样

From bc42812715fb56e72717bf18809dd9ba59771b3a Mon Sep 17 00:00:00 2001
From: Stephen Dolan 
Date: Thu, 16 May 2013 15:07:53 +0100
Subject: [PATCH 1/3] Remove the insane "fold" operation, replace with 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?