【问题标题】:Mercurial: Change username of some commits not pushed yet?Mercurial:更改一些尚未推送的提交的用户名?
【发布时间】:2014-10-28 00:03:21
【问题描述】:

我做了一些提交,但后来我意识到我的用户名设置不正确。我更改了它并使用正确的用户名进行了更多提交。有没有办法在推送所有提交之前更改第一次提交以使用新用户名?

【问题讨论】:

    标签: version-control mercurial


    【解决方案1】:

    以下是我将如何实现您的目标,它依赖于 Mercurial 的补丁队列 @9​​87654321@。 (更新后包含@MarkTolonen's 精彩评论!)

    第 0 步。备份您的工作! (你可以创建一个本地一次性克隆来试试这个)

    1. 在您的配置文件中启用mq 扩展(参见帮助here
    2. 使用hg qimport 将您要编辑的变更集导入补丁队列
    3. 使用hg qpop -a 将这些补丁从应用的补丁堆栈中提取出来
    4. hg qpush推送第一个补丁
    5. 使用hg qref -U将补丁的作者更新为当前用户(或使用hg qref -u <username>明确设置)
    6. 对队列中的每个补丁重复第 4 步和第 5 步。
    7. 仔细检查您的工作 - 您的用户名现在在日志中显示是否正确?
    8. 使用hg qfin -a 将补丁最终确定为变更集
    9. 您现在应该准备好将更新的变更集推送到公共存储库

    我最初的步骤包括在文本编辑器中手动设置用户,取代了上面的步骤 4-6:

    A.打开文件夹.hg\patches,每个变更集都应该有一个###.diff 文件
    B. 在您选择的文本编辑器中打开它们
    C. 编辑顶部以# User <your old user name>开头的行
    并将其更新为# User <your new user name>
    D. 保存补丁
    E. 使用hg push -a 将它们推回应用的堆栈

    【讨论】:

    • hg qpop -a 之后,您还可以hg qpush 一次一个补丁,然后hg qref -U 更新到当前用户信息,而不是手动编辑每个补丁。还有hg qref -u <username> 明确指定它。
    • 这样会容易得多!我已将其编辑到步骤列表中。谢谢@MarkTolonen!
    【解决方案2】:

    可能最简单(也是最快)的方法是从 Mercurial 到 Mercurial 的 convert your repository 带有特殊的 --authormap 用于用新用户名替换旧用户名

    【讨论】:

      猜你喜欢
      • 2010-10-09
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 2011-04-05
      • 1970-01-01
      • 2015-08-12
      • 2018-12-11
      相关资源
      最近更新 更多