使用Mercurial hg bundle和hg export vs merge?

时间:2011-03-02 15:28:19

标签: mercurial merge

您何时会使用hg exporthg bundle

这些命令列在Mercurial快速启动guide上,但我们不清楚何时使用它们。

目前,我们通过拥有不同的存储库并在它们之间进行合并来管理开发人员。即:

cd myapp-1.01
hg pull ../myapp-1.0
hg merge
hg commit
hg push

您何时会使用导出和捆绑而不是我们使用的方法?

2 个答案:

答案 0 :(得分:19)

主要区别在于目标存储库中是否存在父更改集。例如,如果你的源代表有这个:

[A]--[B]---[C]

,您的目的地有:

[A]--[B]

你要发送[C]你可以使用bundle(或者只是推/拉)。

但是,如果您的目标存储库具有:

[A]--[D]

并且您想要添加[C],您必须使用导出和导入。

简而言之:bundle适用于您想要进行推/拉但没有良好的网络路径的情况,export适用于您希望发送变更集的逻辑内容的时间而不是那个特定的,确切的变化集。

答案 1 :(得分:5)

  • Bundle更适合将指定范围的变更集保存到文件中以便于传输(例如,通过电子邮件发送它们以应用于其他位置的其他存储库)。

    来自hg --help bundle

      

    然后可以使用捆绑文件   使用常规手段转移   并应用于另一个存储库   unbundle或pull命令。这是   有用       当直接推拉不可用或导出整个时   存储库是不受欢迎的。

  • 导出似乎为某些变更集生成了一个标题+差异列表,但是帮助文件没有提到这是否有助于自动将它们转移到其他地方。

    此外,导出的文件输出参数可根据版本号等格式化,这使我相信该命令通常用于保存修订版本,使您更容易查看它们(作为文件)