我正在将一个CVS存储库(实际上是其中一些)转换为Mercurial设置,并且想知道是否有任何人有更新和更正变更集中的用户名的经验。
问题是,在相当长的一段时间内,默认用户经常被用于提交到CVS存储库,然后提交消息在末尾提供了“(姓名缩写)”以识别实际提交的人。现在我正在转换为Mercurial,我想通过设置正确的用户名来清理它。
做了一些研究之后,这似乎是微不足道的,我在想这样的事情:
--config convert.cvsps.mergeto='{{mergetobranch ([-\w]+)}}'
--authormap
将默认用户编辑为人员姓名首字母。但我不确定是否有可能选择性地转换分支,然后将其恢复到历史中的原始位置。
非常感谢任何帮助或想法。我当然完全控制了所有的存储库克隆,因为它没有以任何方式发布。
答案 0 :(得分:0)
您需要使用Convert extension。您可以按照post的答案进行操作。
答案 1 :(得分:0)
Convert extension遗憾地没有提供条件作者映射的便捷方法,但它确实允许逐步执行转换。然后,您可以按小步骤执行转换,其中单个作者地图有效。您也可以使用脚本生成这些“fence post”提交。
我今天遇到了类似的问题,我希望在Mercurial存储库中的某些旧提交中有条件地更改用户名。我已将所有步骤捆绑到一个方便的脚本中,您可以找到here。缺点是它取决于某些Mercurial特定的行为,但您可以通过首先使用基本的非条件作者映射进行转换,然后在该存储库上运行条件转换来解决此问题。
这个问题相当陈旧,但是如果你没有太多克隆,那么运行作者名称更正转换可能仍然值得你花些时间。 请记住: hg convert
必然会更改每个变更集的哈希值,因此您必须处理EditingHistory的所有常见问题。我怀疑这是为什么处理这个问题的常用方法Mercurial Queues和较新的HistEdit Extension对合并更改集不起作用的原因之一 - 重做一个很难和很麻烦非叶合并,并且合并的存在通常表示您已共享存储库,这意味着您应该重新考虑编辑历史记录。