【问题标题】:Why doesn't my name and email appear in patches?为什么我的姓名和电子邮件没有出现在补丁中?
【发布时间】:2013-03-07 10:27:39
【问题描述】:

我在本地计算机上克隆了一个远程仓库。

对文件进行更改后,我提交,然后执行此操作以创建补丁:

hg diff -U 8 -p -r PREVIOUS_REVISION_NUMBER file_name > patch_file

我发送 patch_file 以供审核。

但是我没有看到我的名字或电子邮件出现在补丁的任何地方。

我的hgrc 看起来像这样:

[ui]
username = My Name <myemail@domain.com>

[extensions]
mq =

[diff]
git = 1
unified = 8
  1. 我不应该看到我的姓名和电子邮件出现在补丁中吗? 如果确实被推送,我希望远程 repo 的进一步变更集有我的名字用于此提交。

  2. 根据我的工作流程,有没有更好的方法来创建补丁? (进行更改、提交、创建补丁)

编辑:我问是因为我在其他人的补丁中看到了:

# HG changeset patch
# Parent some_long_code
# User name <email>
# Date ....

【问题讨论】:

    标签: mercurial diff patch


    【解决方案1】:

    不要使用hg diff 来生成补丁。使用hg export,它将在文件顶部添加您期望的信息作为标题,包括用户和提交消息。

    使用hg help export 了解更多信息。

    【讨论】:

    • 谢谢。但我只需要导出几个文件。我有时会同时处理 2 个补丁。因此,我将对两组文件进行更改。如何只导出一组文件?
    • Mercurial 不适用于文件,它适用于变更集,因此您不能这样做。您最好的选择可能是使用 mercurial queues 扩展将提交拆分为仅包含您想要的文件的较小提交,然后导出它们。您可能需要检查该扩展程序,看看它是否可用于改进您的工作流程。一切都与使用补丁有关。
    【解决方案2】:

    我不应该在补丁中看到我的姓名和电子邮件吗?

    我不明白为什么。补丁是描述两个文件之间差异的文档。您的个人身份与该差异无关。

    【讨论】:

    • 我的补丁在推送时如何告诉远程仓库这是我的提交?我见过参与所有开源项目的个人的名字。
    • @learner 推送者的身份是元信息。它与推送的数据内容分开。我实际上对 Mercurial 了解不多,但这就是我所知道的每个 VCS 的工作方式。同样,推送的日期/时间也不属于您的补丁。
    • 哦。所以我的信息仍然会发送给他们?
    • @learner 我不明白为什么不这样做!不用登录之类的吗?内置完全匿名的版本控制系统有点傻。
    • 我登录的唯一地方是他们的错误跟踪站点。所以,是的,他们知道是我在给它。但是,如果管理员拿走了我的补丁 patches 并提交它,我似乎不知道我的信息将如何到达主仓库。 (也许是你说的元数据(?))另外,你能看看我的编辑吗?
    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 2015-04-29
    • 2019-09-06
    • 2015-06-07
    • 2018-05-09
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    相关资源
    最近更新 更多