是否可以根据提交消息更改mercurial变更集的用户名?

时间:2011-02-28 13:02:34

标签: mercurial cvs

我正在将一个CVS存储库(实际上是其中一些)转换为Mercurial设置,并且想知道是否有任何人有更新和更正变更集中的用户名的经验。

问题是,在相当长的一段时间内,默认用户经常被用于提交到CVS存储库,然后提交消息在末尾提供了“(姓名缩写)”以识别实际提交的人。现在我正在转换为Mercurial,我想通过设置正确的用户名来清理它。

做了一些研究之后,这似乎是微不足道的,我在想这样的事情:

  • 使用--config convert.cvsps.mergeto='{{mergetobranch ([-\w]+)}}'
  • 将提交消息中的特定首字母转换为hg和tag / branch提交
  • 转换此新存储库,然后使用--authormap将默认用户编辑为人员姓名首字母。

但我不确定是否有可能选择性地转换分支,然后将其恢复到历史中的原始位置。

非常感谢任何帮助或想法。我当然完全控制了所有的存储库克隆,因为它没有以任何方式发布。

2 个答案:

答案 0 :(得分:0)

您需要使用Convert extension。您可以按照post的答案进行操作。

答案 1 :(得分:0)

Convert extension遗憾地没有提供条件作者映射的便捷方法,但它确实允许逐步执行转换。然后,您可以按小步骤执行转换,其中单个作者地图有效。您也可以使用脚本生成这些“fence post”提交。

我今天遇到了类似的问题,我希望在Mercurial存储库中的某些旧提交中有条件地更改用户名。我已将所有步骤捆绑到一个方便的脚本中,您可以找到here。缺点是它取决于某些Mercurial特定的行为,但您可以通过首先使用基本的非条件作者映射进行转换,然后在该存储库上运行条件转换来解决此问题。

这个问题相当陈旧,但是如果你没有太多克隆,那么运行作者名称更正转换可能仍然值得你花些时间。 请记住: hg convert必然会更改每个变更集的哈希值,因此您必须处理EditingHistory的所有常见问题。我怀疑这是为什么处理这个问题的常用方法Mercurial Queues和较新的HistEdit Extension对合并更改集不起作用的原因之一 - 重做一个很难和很麻烦非叶合并,并且合并的存在通常表示您已共享存储库,这意味着您应该重新考虑编辑历史记录。