【问题标题】:Is it possible to change the username on a mercurial changeset based on the commit message?是否可以根据提交消息更改 mercurial 变更集上的用户名?
【发布时间】:2011-07-05 18:24:20
【问题描述】:

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

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

做了一些研究,这似乎很重要,我在想类似这样的事情:

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

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

任何帮助或想法将不胜感激。我当然可以完全控制所有存储库克隆,因为它不会以任何方式发布。

【问题讨论】:

    标签: mercurial cvs


    【解决方案1】:

    您需要使用Convert extension。您可以关注此post 的答案。

    【讨论】:

    • 谢谢,但这只会让我从一个用户名更改为另一个。我有很多来自同一个用户名的提交,但我想根据提交消息中的一些文本将其中一些更改集从用户 def_user 更改为 inialsA ,将其他更改集更改为 initialsB 等。
    【解决方案2】:

    遗憾的是,Convert extension 没有提供一种方便的方式来进行有条件的作者映射,但它确实允许逐步执行转换。然后,您可以分小步执行转换,其中单个作者地图是有效的。您还可以使用脚本生成这些“栅栏柱”提交。

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

    这个问题相当老了,但如果你没有太多的克隆人,那么运行作者姓名更正转换可能仍然值得你花时间。 记住: hg convert 必然会更改每个变更集的哈希值,因此您必须处理 EditingHistory 的所有常见问题。我怀疑这是处理此问题的常用方法Mercurial Queues 和较新的HistEdit Extension 不能很好地处理合并变更集的部分原因——重做非叶合并既困难又混乱,并且合并的存在通常表明您已共享存储库,这意味着您应该重新考虑编辑历史记录。

    【讨论】:

      猜你喜欢
      • 2010-10-18
      • 2018-05-19
      • 2017-12-08
      • 2012-05-09
      • 2012-11-22
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      相关资源
      最近更新 更多