什么是git format-patch输出的第一行?

时间:2013-04-03 14:26:25

标签: git format-patch

运行git format-patch时,目的是创建您编写的代码的电子邮件表示。到现在为止还挺好。我不是电子邮件专家,但在我看来,这种格式补丁输出的第一行不是标准的电子邮件标题格式......

From de8d128fb520416e0b029c913b3a5ce900d0320c Mon Sep 17 00:00:00 2001
Message-Id: 
From: Christopher Harvey 
Date: Wed, 3 Apr 2013 10:17:52 -0400
Subject: [PATCH 0/3] *** SUBJECT HERE ***
To: Christopher Harvey 

*** BLURB HERE ***

Christopher Harvey (3):
  commit 2
  commit 3
  commit 4

 data | 3 +++
 1 file changed, 3 insertions(+)

-- 
1.7.12.4

什么是From de8d128fb520416e0b029c913b3a5ce900d0320c Mon Sep 17 00:00:00 2001?是什么日期?它看起来对我来说是任意的,它也阻止我将它传递给sendmail。每次我想发送补丁时,我都必须手动删除该行。

感谢。

5 个答案:

答案 0 :(得分:17)

来自git help format-patch

  

讨论          git format-patch生成的补丁是UNIX邮箱格式,带有          一个固定的“魔术”时间戳,表示该文件是从中输出的          format-patch而不是真正的邮箱,如下所示:

       From 8f72bad1baf19a53459661343e21d6491c3908d3 Mon Sep 17 00:00:00 2001
       From: Tony Luck <tony.luck@intel.com>
       Date: Tue, 13 Jul 2010 11:42:54 -0700
       Subject: [PATCH] =?UTF-8?q?> > [IA64]=20Put=20ia64=20config=20files=20on=20the=20?=
        =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20diet?=
       MIME-Version: 1.0
       Content-Type: text/plain; charset=UTF-8
       Content-Transfer-Encoding: 8bit

答案 1 :(得分:4)

输出采用mbox格式。您可以使用以下方法轻松删除第一行:

git format-patch --stdout <range> | sed 1d

然后根据结果随意做。

或者,您可以使用git本身来发送电子邮件。尝试:

git send-mail --smtp-server=<your server> *.patch

有关所有选项,请参阅GIT Send-Mail Manpage

答案 2 :(得分:3)

作为Fredrik's answer的附录,以下是Junio Hamano的一些相关评论:

  

"Mon Sep 17 00:00:00 2001"只是一个假的随机日期,可以让普通的MUA识别出Unix-From行,并且与你的提交对象没有任何关系。实际日期位于Date:标题。

  

我实际上曾经尝试将其更改为git的生日(Thu Apr 7 15:13:13 2005 -0700),我记得事实证明有些人的脚本(或许是MUA)被打破并且关心什么是之前&#34; 7&#34; ...在Unix-From行上并丢弃该更新。

  

"From $SHA1 $magic_timestamp"行和其他标题行使其看起来像mbox

链接:123

答案 3 :(得分:1)

Git 2.32(2021 年第二季度)实际上在文档的其余部分开始引用它们之前预先解释了格式补丁输出的部分。

请参阅 commit 28e29eeJunio C Hamano (gitster)(2021 年 3 月 24 日)。
(由 Junio C Hamano -- gitster --commit 5c2f7ff 合并,2021 年 3 月 30 日)

<块引用>

format-patch:概述什么是“补丁”消息

<块引用>

文中说一个叫做“patch”的东西是为每次提交准备的,它适用于电子邮件提交,“am”是使用它的命令,但没有说明“patch”到底是什么.

页面中的描述也提到了“三个破折号”行,但不清楚它是什么,除非读者对“补丁”是什么有更详细的概述。

添加一个简短的段落以概述输出的外观。

git format-patch 现在包含在其 man page 中:

<块引用>

准备每个提交及其“补丁” 每次提交一个“消息”,格式类似于 UNIX 邮箱。

<块引用>

命令生成的“消息”由三部分组成:

  • From <commit> 开头的简短元数据标头 使用固定的 Mon Sep 17 00:00:00 2001 日期戳来帮助程序 像“file(1)”一样识别文件是这个的输出 命令、记录作者身份的字段、作者日期、 和更改的标题(取自第一段 提交日志消息)。

  • 提交日志消息的第二段和后续段落。

  • “补丁”,即“diff -p --stat”输出(参见 git diff) 在提交与其父项之间。

日志信息和补丁用一行分隔 三段划线。

答案 4 :(得分:0)

来自维基百科(https://en.wikipedia.org/wiki/September_17

2001年 - 纽约证券交易所在911袭击事件后重新开始交易,这是大萧条以来最长的关闭。

也许只是巧合!