And*_*ett 83
如果您还没有发布您的存储库,那么这应该不会太难.您需要使用转换扩展为Mercurial,这将允许您"过滤"现有存储库以创建新存储库.--authors开关允许您在过滤时为每个提交编辑作者.
如果您已发布存储库,请考虑对用户的影响,mercurial wiki有一些不编辑历史记录的原因.
通过将这些行添加到.hgrc来启用扩展:
[extensions]
hgext.convert=
Run Code Online (Sandbox Code Playgroud)
编写一个文件以将旧名称映射到新名称(authors.convert.list):
user@ubuntu=real.name@my.example.com
Run Code Online (Sandbox Code Playgroud)
运行转换:
hg convert --authors authors.convert.list SOURCE DEST
Run Code Online (Sandbox Code Playgroud)
我刚检查过它,它对我有用:).
Sou*_*man 15
如果你有一个单一的传出变更,有一个很简单的方法来做到这一点:
$ hg ci --amend --user "My Name <mymail@example.org>" -X "**"
Run Code Online (Sandbox Code Playgroud)
-X "**"如果您没有任何本地更改,则可以省略该选项.
And*_*lay 13
我尝试了几种不同的方法(包括Convert Extension,我发现它创建了一个不相关的存储库).使用MQ编辑历史记录的Mercurial wiki说明是我发现最有帮助的.(当然,关于编辑任何公知历史的常见警告都是一个坏主意,但只有你自己的本地变更集才可以编辑).
我将总结这里的关键步骤,并澄清更改作者的机制.假设第一个错误的作者提交正在修订BAD(并且您当然没有在任何地方发布您的更改),您应该能够执行以下操作(我假设您在存储库根目录下):
通过将此添加到$ HOME/.hg/hgrc来启用MQ
[extensions]
hgext.mq=
Run Code Online (Sandbox Code Playgroud)
将最近的变更集转换为补丁:
$ hg qimport -r BAD:tip
Run Code Online (Sandbox Code Playgroud)
(他们现在可以找到.hg/patches)
"取消应用"所有补丁(假设它们已被应用并反转它们),以使您的存储库进入修订状态之前BAD:
$ hg qpop -a
Run Code Online (Sandbox Code Playgroud)
如果您查看补丁,您将看到作者在所有补丁中以一种注释行编码:
$ grep User .hg/patches/*
.hg/patches/102.diff:# User Firstname Lastname <f.lastname@oops.wrongurl.example.com>
Run Code Online (Sandbox Code Playgroud)
现在使用您最喜欢的搜索/替换工具来修复补丁(我在这里使用Perl).假设您希望提交名称为f.lastname@righturl.example.com:
$ perl -pi -e 's/f\.lastname\@oops\.wrongurl\.example\.com/f.lastname\@righturl.example.com/' .hg/patches/*.diff
Run Code Online (Sandbox Code Playgroud)
现在检查您是否已成功更改作者姓名,然后重新应用修补程序:
$ hg qpush -a
Run Code Online (Sandbox Code Playgroud)
然后将应用的补丁转换为适当的变更集:
$ hg qfinish -a
Run Code Online (Sandbox Code Playgroud)
而且你已经完成了.您的存储库仍然列为相关信息,因此您不会收到有关推送的任何投诉.
zan*_*edp 10
我已经使用了histedit扩展,它允许我更改作者而不用像"转换"那样的新回购或使用"mq".
首先,在Mercurial配置文件中,确保正确设置了用户名并启用了histedit扩展:
[ui]
username = Your Name <your.name@domain.org>
[extensions]
histedit =
Run Code Online (Sandbox Code Playgroud)
然后,如果要更改版本40,请使用:
hg histedit -r 40
Run Code Online (Sandbox Code Playgroud)
在出现的文件中,在与修订版40对应的行上,将单词更改pick为edit.保存并关闭文件.
现在,hg commit.您需要重新输入提交消息并保存.
最后,hg histedit --continue.
提交将与您的新提示一起显示username.副作用是提交的时间戳也会更新.
| 归档时间: |
|
| 查看次数: |
18914 次 |
| 最近记录: |