如何在使用git send-email发送邮件时添加附加文本?

9
我正在使用git send-email <patch-name>发送补丁。
我想在邮件中添加一些额外的文本,除了提交信息之外。
有没有办法实现这个需求?

Git 2.18(2018年第二季度)现在(7年后)提供了一种官方的方法来实现这一点。请参见下面的我的答案 - VonC
3个回答

5
您可以使用--annotate,然后在补丁的两个---之间添加您的注释,这不会影响补丁本身。
参考:https://kparal.wordpress.com/2011/08/03/git-tip-of-the-day-introduction-text-when-emailing-patches/ 例如:
From 7ea3c50fa83950549de11c6834c465bc8f28b52b Mon Sep 17 00:00:00 2001
From: James Laska
Date: Mon, 1 Aug 2011 09:53:16 -0400
Subject: [PATCH] compose_tree - Save the setup.sh script for later debugging

---
This patch is really really important, because otherwise the 
world will end in 2012. Please accept it.

 tests/compose_tree/compose_tree.sh |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/tests/compose_tree/compose_tree.sh b/tests/compose_tree/compose_tree.sh
index 66ecefd..c2e041d 100755
--- a/tests/compose_tree/compose_tree.sh
+++ b/tests/compose_tree/compose_tree.sh
... (the rest of the patch)

1
还有一个选项可以将 --annotate 设为默认值:git config --global sendmail.annotate true。个人而言,我更倾向于在文本编辑器中打开补丁文件进行审查,并在调用 git send-email 之前添加注释。 - Ciro Santilli OurBigBook.com
应该是 git config --global sendemail.annotate true(即,“email”而不是“mail”)。 - undefined

2
文档中提到,您可以在git send-email命令中添加--compose选项,以“调用文本编辑器编辑补丁系列的介绍性消息”。
如果您想自动化此操作并通过脚本生成一些文本,则可以将$GIT_EDITOR环境变量设置为您的脚本。它将接收文本的临时文件名作为命令行参数。您的脚本退出后,该文件的内容将被插入到消息中。 git send-email命令的格式如下:
$GIT_EDITOR="/path/to/your/script" git send-email ...

你的脚本可以是这个样子:
#!/bin/bash

echo "Your message" > $1

1
但是如果我只有一个补丁,而不是一系列的补丁会发生什么? - Daniel Băluţă
我认为单个补丁是由一个补丁组成的补丁系列。随意尝试一下。 - lig
1
不,我不想为了发送一个简短的补丁介绍信息而单独创建一个电子邮件。 - Daniel Băluţă
@DanielBăluţă,我不明白你的评论。您想要发送电子邮件的补丁系列。有一种解决方案可以向将被发送的电子邮件消息添加消息正文文本。此消息将包含所有补丁。如果您的补丁系列仅包含一个补丁,则此邮件将包含您的单个补丁和提供的消息正文。 - lig

1

Git 2.18 (Q2 2018)提供了一个替代--annotate--compose的选项,用于在使用git send-email发送电子邮件时添加附加文本。

请参见提交04c4a4e(由Drew DeVault (SirCmpwn)于2018年5月4日提交)。
协助者:Eric Wong (ele828)
(由Junio C Hamano -- gitster --于2018年5月30日合并到提交89be19d中)

git-send-email:允许重新编辑邮件

在显示电子邮件摘要时,向用户提供了一个机会,让他们像指定--annotate一样编辑电子邮件。
这也允许他们多次编辑。

有时"git send-email"会提供确认对话框"发送此电子邮件?",其中包含选择''、''、'退出'和'全部'。
此对话框的选项中添加了一个新操作'编辑'。

git-send-email.perl中所示:

# If the user decides they want to make further edits, -1 is returned and the
# caller is expected to call send_message again after the edits are performed.

备忘录:这是我第10000个 [tag:git] 答案,比起10年前的第一个答案像这个少了一点。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接