anatoly techtonik Asked: 2015-01-26 06:00:52 +0800 CST2015-01-26 06:00:52 +0800 CST 2015-01-26 06:00:52 +0800 CST hg-bzr 插件可以吗? 772 我想知道为什么没有 Mercurial 插件可以与 Mercurial 的 Launchpad/Bazaar 一起使用?是否有任何技术限制导致无法使用本地 Mercurial 存储/克隆来处理远程 Bazaar 存储库? launchpad 1 个回答 Voted Best Answer jelmer 2015-02-06T16:21:59+08:002015-02-06T16:21:59+08:00 相反的 (bzr-hg) 确实存在,但该插件已在 2012 年被废弃。请参阅https://launchpad.net/bzr-hg。我怀疑 hg-bzr 插件没有出现的原因与我们放弃 bzr-hg 插件的原因类似,此外 bzr 的流行度已经下降 - 所以插件的必要性降低了。 bzr-hg 插件的问题之一是 Bazaar 和 Mercurial 都有较低级别的 API,这些 API 经常变化,以至于插件会经常中断。 Bazaar 和 Mercurial 也有完全不同的数据模型——差异比 Bazaar 和 Git 之间的差异更大——这使得很难以高效的方式转换修订。 Mercurial 和 Bazaar 有许多很难在它们之间映射的特性。 Mercurial manifests 和 Bazaar inventory 中的信息不能轻易来回转换——你需要查找表来获取文件标识信息 Bazaar 修订属性类似于 Mercurial extras,但它们不支持特殊字符(或反之) Mercurial 不支持“幽灵修订”,即引用但不存在于存储库中的修订 Mercurial 没有文件 ID 的概念,因此文件 ID 需要像特殊文件一样存储在存储库的其他位置 Mercurial 不支持空目录、多个提交作者或具有两个以上父项的修订(Git 术语中的“章鱼合并”) 与 Git 交互时,这些事情要容易得多,因为它是内容可寻址的并且更简单(例如,它没有每个文件的修订图)。Hg-Git 或 Bzr-Git 可以将 Git 中的任何内容导入 Mercurial,只要您最终以相同的表示将其转换回 Git,您就会获得与最初相同的提交 SHA。
相反的 (bzr-hg) 确实存在,但该插件已在 2012 年被废弃。请参阅https://launchpad.net/bzr-hg。我怀疑 hg-bzr 插件没有出现的原因与我们放弃 bzr-hg 插件的原因类似,此外 bzr 的流行度已经下降 - 所以插件的必要性降低了。
bzr-hg 插件的问题之一是 Bazaar 和 Mercurial 都有较低级别的 API,这些 API 经常变化,以至于插件会经常中断。
Bazaar 和 Mercurial 也有完全不同的数据模型——差异比 Bazaar 和 Git 之间的差异更大——这使得很难以高效的方式转换修订。
Mercurial 和 Bazaar 有许多很难在它们之间映射的特性。
与 Git 交互时,这些事情要容易得多,因为它是内容可寻址的并且更简单(例如,它没有每个文件的修订图)。Hg-Git 或 Bzr-Git 可以将 Git 中的任何内容导入 Mercurial,只要您最终以相同的表示将其转换回 Git,您就会获得与最初相同的提交 SHA。