如何处理Mercurial中的提交者名称更改

时间:2010-10-16 21:05:55

标签: version-control mercurial

我在Mercurial中有一个项目提交者。不幸的是,一些提交者已多次更改名称,例如首先它是“昵称”,然后它变成了“名字姓氏”,然后是其他东西。

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

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

1 个答案:

答案 0 :(得分:19)

是的,这是可能的。使用带有错误名称的存储库中的Convert extensionhg convert到具有良好名称的新存储库并使用authormap。您可以使用转换扩展和从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存储库可能会创建至少一些新的更改集,或者没有理由这样做。这几乎肯定会让每个人都破坏所有克隆并重新克隆。

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