如何更改用于git format-patch的From:地址?

时间:2013-02-26 05:19:58

标签: git

我正在为开源项目生成一些补丁,而我的From:行总是me@domain.com。在运行git send-email之前,我一直在手动编辑From:行为me-emaillist@domain.com。

  1. 无论如何都要自动执行此操作?
  2. 我应该这样做吗?我已经在使用信封发件人配置。
  3. 上游回购中的作者是否会“me-emaillist@domain.com”,因为我更改了发件人地址?
  4. 示例:

    From fab0cf45f10686688a8138f60a09505200cbb2a4 Mon Sep 17 00:00:00 2001
    From: John Doe <me-emaillist@domain.com>
    Date: Mon, 25 Feb 2013 23:06:23 -0500
    Subject: [PATCH] nand: adjust erase/read/write partition/chip size for bad blocks
    

    在考虑了mvp的答案之后,我明确的答案是:

    1. 不,因为......
    2. 不,因为......
    3. 是的,From:行取自提交的作者,因为git am在上游存储库中设置作者姓名时使用From:行。

5 个答案:

答案 0 :(得分:2)

使用git1.8.4 (July 2013),您现在可以设置“来自字段”:

  

git format-patch”学习了“--from[=whom]”选项,它将“From:”标头设置为指定人员(或运行命令的人员,如果“=whom }“部分丢失”并根据需要将原始作者信息移动到体内From:标题。

请参阅commit a90804752f6ab2b911882d47fafb6c2b78f447c3

  

format-patch生成电子邮件,其中“From”地址设置为每个修补程序的作者。但是,如果要发送电子邮件,则需要将作者身份替换为您的身份(如果它们不相同),并将作者身份提交到体内   报头中。

     

通常这由git-send-email处理,--from在发送电子邮件之前进行转换。但是,某些工作流程可能不使用send-email(例如,imap-send或将mbox提供给非git MUA的自定义脚本)。他们每个人都可以自己实现这个功能,但是正确实现这一功能并非易事(必须通过反转任何RFC2047编码或RFC822引用标头来标准化身份,这已经在多年来的发送电子邮件中造成了许多错误。)

     

这个补丁采用了不同的方法:它教授格式补丁“<peff@peff.net>”选项,该选项在写出电子邮件时处理身份检查和体内标题。
  在这个级别上做起来要简单得多(因为我们还没有做任何引用),任何基于格式补丁的工作流都可以轻松打开它。

     

签名:Jeff King git format-path --from=...

你现在可以做:

--from::
--from=<ident>::

使用:

ident
  

在每封提交电子邮件的From:标题中使用ident   如果提交的作者标识在文本上与提供的From:不同,请在原始作者的邮件正文中放置ident标题。
  如果没有给出git am,请使用提交者标识。

     

请注意,此选项仅在您实际发送电子邮件并希望将自己标识为发件人,但保留原作者时才有用(而git send-email将正确选择体内标题)   另请注意,git send-email已经为您处理了此转换,如果您将结果提供给format-patch ,则不应使用此选项。


2016年8月更新(3年后)

commit 6bc6b6cJosh Triplett (joshtriplett)(2016年8月1日) (由Junio C Hamano -- gitster --合并于commit db40a62,2016年8月10日)

  

format.from--from提供--from

的默认值      

这有助于希望将format-patch默认为format.from: 的用户,   并且可以更容易地在将来更改默认值。

git config man page now includes

--from

提供格式化补丁的false选项的默认值 接受布尔值,或名称和电子邮件地址。

  
      
  • 如果format-patch--no-from默认为true,则直接在修补程序邮件的“发件人:”字段中使用提交作者。
  •   
  • 如果format-patch--from默认为From:,则在补丁邮件的“From:”字段中使用您的提交者身份并包含“false”如果不同,补丁邮件正文中的字段。
  •   
  • 如果设置为非布尔值,则format-patch使用该值而不是您的提交者标识。
  •   
     

默认为{{1}}。

答案 1 :(得分:1)

设置你的git身份就足够了:

git config --global user.email me@domain.com
git config --global user.name "John Doe"

您还可以为每个git存储库设置您的身份:在该git存储库中运行这些命令,只需省略--global标记。

您可能不应该使用me-emaillist@domain.com,因为如果某人git am,则此提交将不具有您的身份。

这样做的唯一原因可能就是避免垃圾邮件进入您的主要地址 - 但我认为一旦公开,您就会得到垃圾邮件。

答案 2 :(得分:0)

尝试运行echo 'alias me "John Doe <me-emaillist@domain.com"' >> ~/.gitaliases

答案 3 :(得分:0)

使用特定电子邮件地址而不是另一种电子邮件地址的另一个选择是使用 sendmail电子邮件别名格式,现在由git send-email支持(至少在Git 2.5 +,2015年7月)

commit 3169e06Allen Hubbe (allenbh)(2015年5月26日) Junio C Hamano -- gitster --commit 412e63f合并,2015年6月16日)

  

send-email:添加sendmail电子邮件别名格式

     

教成send-email以sendmail别名格式读取别名,即

<alias>: <address|alias>[, <address|alias>...]
  

示例:

alice: Alice W Land <awol@example.com>
bob: Robert Bobbyton <bob@example.com>
# this is a comment
   # this is also a comment
chloe: chloe@example.com
abgroup: alice, bob
bcgrp: bob, chloe, Other <o@example.com>

注意:

  
      
  • 不支持引用的别名和引用地址。
  •   
  • 不支持续行。
  •   

对于Git 2.6 +(2015年第3季度),Remi Lespinet (Awaryn)对该功能进行了巨大的返工:

  

&#34; git send-email&#34;现在对通过--cccmd等提供的名称执行别名扩展

     

本轮附带了更多增强型电子邮件地址解析器。

请参阅commit fa5b1aacommit b1c8a11commit 1fe9703commit c46e27acommit 193d716commit b5e112dcommit d4cf11c,{{3} },commit f6f79e5,(2015年6月30日),commit 62089fb,(2015年6月30日),(2015年6月30日),commit b1c8a11(2015年7月7日)commit 8d314d7。<登记/> (由Remi Lespinet (Awaryn)合并于Junio C Hamano -- gitster --,2015年8月3日)

答案 4 :(得分:0)

对我来说(git版本2.17.1)有效:

git config format.from true

根据man git config

  

...如果为true,格式补丁程序默认使用--from,使用   修补程序邮件的“发件人:”字段中的提交者身份,如果不同,则在修补程序邮件的正文中包括“发件人:”字段。