发布补丁队列的Git方法是什么?

时间:2011-02-16 13:14:23

标签: git mercurial mercurial-queue

我习惯Mercurial mq extension在上游维护一组自定义补丁。它们可以作为除上游之外的单独存储库发布。现在在git中我使用私有分支和rebase,它运行良好,直到我想与其他人共享我的补丁。

在Mercurial中,补丁队列是一个独立的存储库,可以像往常一样发布。 Bitbucket甚至提供了一个补丁队列功能,可以将其链接到父存储库。在Git中,如果我发布了一个包含我的补丁的私有分支,我就失去了再修改它们的能力(除非我破坏了合并),但补丁需要不时更新。

another SO question我发现,在Git世界中,StGit被提议作为mq的等价物。它与mq的使用类似,但如何使用StGit发布补丁队列?

stg publish似乎是为了创建一个新的“合并友好”分支,而不是自己发布补丁)

在Git中发布补丁队列的其他方法是什么?

4 个答案:

答案 0 :(得分:8)

总结答案和评论。使用git,有两种方法可以在远程上游发布小型自定义修改:

  • 忘记rebase,根据需要发布分支和新合并
  • 声明分支正在变基础,只是变基和发布(亲:干净的历史,反对:可能是其他人不断使用的痛苦,例如:linux-next)

到目前为止,纯补丁队列工作流似乎不适用于git,但guilt似乎非常接近mq,甚至是命令的名称。它不允许版本控制(和可发布)的补丁队列。

答案 1 :(得分:1)

考虑到给出的评论,似乎一种方法或多或少等同于Mercurial的mq将使用内疚。与mq不同,guilt不直接为“补丁库”提供接口,但您可以手动将.git/patches/<branch>转换为.git存储库。

答案 2 :(得分:0)

有一个名为git-series的git扩展,它使用git来维护版本化的补丁队列。它允许与#headerContent { display: inline; } .is-hidden { visibility: hidden; opacity: 0; transform: translateY(-100px); } .is-visible { visibility: visible; opacity: 1; transform: translateY(0); transition: all 0.3s ease-out; } 类似的功能,因为你可以维护多个系列(相当于多个hg队列),根据反馈重构补丁,并将系列提交到git。这是最接近mq的,但是不同的是你应该期待一些脚射击。

答案 3 :(得分:-1)

来自提供的关于Mq的链接的AFAICT,它与git rebase有大致相同的发布问题?

总而言之,我认为发布您的分支,并警告它是一个变基分支是您的最佳选择。例如,这就是linux-next分支的维护方式。