使用Mercurial hg bundle和hg export vs merge?

Mar*_*eon 15 merge mercurial

什么时候你会使用hg exporthg bundle

这些命令列在Mercurial快速入门指南中,但我们不清楚何时使用它们.

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

cd myapp-1.01
hg pull ../myapp-1.0
hg merge
hg commit
hg push
Run Code Online (Sandbox Code Playgroud)

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

Ry4*_*ase 19

主要区别在于父更改集是否存在于目标存储库中.例如,您的源代码库具有以下内容:

[A]--[B]---[C]
Run Code Online (Sandbox Code Playgroud)

你的目的地有这个:

[A]--[B]
Run Code Online (Sandbox Code Playgroud)

并且你想发送[C]你可以使用bundle(或只是推/拉).

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

[A]--[D]
Run Code Online (Sandbox Code Playgroud)

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

简而言之:bundle用于何时进行推/拉但没有良好的网络路径,export适用于何时发送变更集的逻辑内容而不是特定的精确变更集.


Dan*_*Dan 5

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

    来自hg --help bundle:

    然后可以使用常规方法传输捆绑文件,并使用unbundle或pull命令将其应用于另一个存储库.当直接推送和拉取不可用或者不希望导出整个存储库时,这很有用.

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

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