【问题标题】:How to deal with committer name change in Mercurial如何处理 Mercurial 中的提交者名称更改
【发布时间】:2010-10-16 21:05:54
【问题描述】:

我在 Mercurial 中有一个项目,其中有一组提交者。不幸的是,一些提交者已经多次更改名称,例如首先是“昵称”,然后是“姓氏”,然后是其他内容。

大多数存储库分析工具都希望提交者在项目过程中具有相同的名称,因此理想情况下,我想在我们的主存储库中重命名先前修订版的提交者,并让每个人都进行新的克隆。有可能吗?

还有其他方法可以解决这个问题吗?

【问题讨论】:

  • 我希望大多数 repo 分析工具实际上允许提交者名称的映射/别名文件,这个问题不是 hg 独有的,而且很常见。
  • 是的,第二个tonfa,具体来说你在看什么存储库分析工具?我见过的所有这些(流失、活动和来自 mercurial wiki 的图表)都在分析时提供了简单的映射。不同的提交者名称很常见,因为 user@host 是最喜欢的用户名值。你最好让你的分析更聪明,而不是让你的 repo 更统一,因为 repo 会再次在名称上重新发散。
  • 要求 Mercurial 开发人员为所有历史浏览命令提供 .mailmap 工具,例如在 Git 中(参见 git-shortlog 手册页);-P

标签: version-control mercurial


【解决方案1】:

是的,这是可能的。使用 Convert extension 然后 hg convert 从名称错误的存储库到具有好名称的新存储库,并使用作者映射。使用 convert 扩展程序并将 Mercurial 转换为另一个 Mercurial 存储库,您可以完成很多事情。

Authormap 文件,假设Eric Hopper <bumpy@bar.com> 是作者的规范名称:

Eric Hopper <bouncy@foo.com>=Eric Hopper <bumpy@bar.com>
Eric M. Hopper <bouncy@foo.com>=Eric Hopper <bumpy@bar.com>
Eric Hopper <bouncy@baz.com>=Eric Hopper <bumpy@bar.com>

然后:

hg convert -s hg -d hg --authormap authormap badnamesrepo goodnamesrepo

注意:虽然将 hg 转换为 hg 存储库并不总是会创建大量新的变更集,但在这种情况下会,并且它们将等同于(但不同于)原始存储库。这意味着使用此存储库的每个人都必须删除他们拥有的所有克隆并获取新的克隆。

在一般情况下,将 hg 存储库转换为 hg 存储库可能会创建至少一些新的变更集,或者没有理由这样做。几乎可以肯定的是,每个人都必须销毁他们所有的克隆并重新克隆。

如果您的分析工具能够重新映射作者姓名,那可能是更好的选择。但这不是你要求的,所以我给了你你要求的答案。 :-)

【讨论】:

  • 一个非常重要的警告:hg convert 将破坏所有存在的克隆,因为哈希值会改变,push/pull 不会除非每个人都重新克隆,否则不再在克隆之间工作。
  • tonfa:出于这个原因,问题确实包括每个人都在制作新的克隆。
  • @tonfa - 是的,我想到了这一点,但 OP 确实提到每个人都必须得到一个新的克隆,所以我假设他知道。我应该把它放在答案中,尽管将来如此粗心和粗心的读者不会得到意想不到的结果。
  • @tonfa - 在那里,修好了。 :-)
猜你喜欢
  • 1970-01-01
  • 2021-02-08
  • 2021-08-09
  • 2019-07-31
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
相关资源
最近更新 更多