?
This document uses PHP Chinese website manual Release
git-send-email - 以電子郵件的形式發(fā)送一組補丁
git send-email [options] <file|directory|rev-list options>… git send-email --dump-aliases
接受命令行上給出的補丁并將其發(fā)送出去。修補程序可以指定為文件,目錄(這將發(fā)送目錄中的所有文件),或直接作為修訂列表。在最后一種情況下,git-format-patch [1]接受的任何格式都可以傳遞給 git send-email。
電子郵件的標題可通過命令行選項進行配置。如果未在命令行中指定,則系統(tǒng)將提示用戶使用啟用了 ReadLine 的接口來提供必要的信息。
接受補丁文件有兩種格式:
mbox 格式文件這是 git-format-patch [1]生成的內容。大多數(shù)標題和 MIME 格式都會被忽略。
Greg Kroah-Hartman send_lots_of_email.pl
腳本使用的原始格式此格式預期文件的第一行包含消息的“Cc:”值和“Subject:”作為第二行。
--annotate
查看并編輯您即將發(fā)送的每個補丁。默認值是sendemail.annotate
。請參閱 CONFIGURATION 部分sendemail.multiEdit
。
--bcc=<address>,…
為每封電子郵件指定一個“密件抄送:”值。默認值是sendemail.bcc
。
此選項可能會多次指定。
--cc=<address>,…
為每封電子郵件指定一個開始的“抄送:”值。默認值是sendemail.cc
。
此選項可能會多次指定。
--compose
調用文本編輯器(請參閱 git-var [1]中的 GIT_EDITOR)以編輯補丁系列的介紹性消息。
何時--compose
使用,git send-email 將使用消息中指定的 From,Subject 和 In-Reply-To頭。如果郵件正文(在標題和空白行之后鍵入的內容)僅包含空白(或 Git:前綴)行,則不會發(fā)送摘要,但發(fā)件人,主題和收件人回復標題將除非被移除,否則應該使用。
缺少 From 或 In-Reply-To 頭將被提示輸入。
請參閱 CONFIGURATION 部分sendemail.multiEdit
。
--from=<address>
指定電子郵件的發(fā)件人。如果未在命令行中指定,sendemail.from
則使用配置選項的值。如果沒有設置命令行選項sendemail.from
,則會提示用戶輸入值。提示的缺省值將是 GIT_AUTHOR_IDENT 或 GIT_COMMITTER_IDENT 的值,如果未設置,則返回“git var -l”。
--in-reply-to=<identifier>
使第一封郵件(或所有郵件--no-thread
)顯示為對給定 Message-Id 的回復,從而避免中斷線程以提供新的補丁系列。根據(jù)設置,第二封和隨后的電子郵件將作為回復發(fā)送--[no-]chain-reply-to
。
因此,例如,當--thread
與--no-chain-reply-to
被指定,第二和后續(xù)的補丁將是回復到第一個像在下面,其中插圖[PATCH v2 0/3]
是答復[PATCH 0/2]
:
[PATCH 0/2] Here is what I did... [PATCH 1/2] Clean up and tests [PATCH 2/2] Implementation [PATCH v2 0/3] Here is a reroll [PATCH v2 1/3] Clean up [PATCH v2 2/3] New tests [PATCH v2 3/3] Implementation
只有在--compose 也被設置時才有必要。如果--compose 未設置,則會提示輸入。
--subject=<string>
指定電子郵件線索的初始主題。只有在--compose 也被設置時才有必要。如果--compose 未設置,則會提示輸入。
--to=<address>,…
指定生成的電子郵件的主要收件人。一般來說,這將是所涉及項目的上游維護者。默認值是sendemail.to
配置值的值; 如果未指定,并且未指定--to-cmd,則會提示此處。
該選項可能會多次指定。
--8bit-encoding=<encoding>
遇到非 ASCII 消息或未聲明其編碼的主題時,請?zhí)砑訕祟}/引用以指示它在<編碼>中編碼。默認值是該值sendemail.assume8bitEncoding
; 如果未指定,則會提示是否遇到任何非ASCII文件。
請注意,沒有任何嘗試驗證編碼。
--compose-encoding=<encoding>
指定撰寫郵件的編碼。默認值是該值sendemail.composeencoding
; 如果沒有指定,則假定為 UTF-8。
--transfer-encoding=(7bit|8bit|quoted-printable|base64)
指定用于通過 SMTP 發(fā)送消息的傳輸編碼。遇到非 ASCII 消息時,7bit將失敗。當存儲庫包含包含回車符的文件時,quoted-printable 可能很有用,但會使原始修補程序電子郵件文件(如從 MUA 保存的文件)難以手動檢查。base64 更加笨手笨腳,但也更加不透明。默認值是sendemail.transferEncoding
配置值的值; 如果沒有指定,git 將使用8位而不添加 Content-Transfer-Encoding 標頭。
--xmailer --no-xmailer
添加(或阻止添加)“X-Mailer:”標題。默認情況下,添加標題,但可以通過設置sendemail.xmailer
配置變量來關閉標題false
。
--envelope-sender=<address>
指定用于發(fā)送電子郵件的信封發(fā)件人。如果您的默認地址不是訂閱列表的地址,這很有用。為了使用From
地址,請將該值設置為“auto”。如果使用 sendmail 二進制文件,則必須具有-f參數(shù)的適當權限。默認值是sendemail.envelopeSender
配置變量的值; 如果沒有指定,選擇信封發(fā)件人留給您的 MTA。
--smtp-encryption=<encryption>
指定要使用的加密,ssl
或者tls
。任何其他值都會恢復為普通 SMTP。默認值是sendemail.smtpEncryption
。
--smtp-domain=<FQDN>
指定在 SMTP 服務器的 HELO / EHLO 命令中使用的完全限定的域名(FQDN)。一些服務器需要 FQDN 來匹配您的 IP 地址。如果未設置,git send-email會自動嘗試確定您的 FQDN。默認值是sendemail.smtpDomain
。
--smtp-auth=<mechanisms>
空白分隔的允許的 SMTP-AUTH 機制列表。該設置強制只使用列出的機制。例:
$ git send-email --smtp-auth="PLAIN LOGIN GSSAPI" ...
如果至少有一個指定的機制與 SMTP 服務器通告的機制匹配,并且所用的 SASL 庫支持該機制,則使用該機制進行身份驗證。如果既沒有sendemail.smtpAuth
也沒有--smtp-auth
指定,可以使用 SASL 庫支持的所有機制。
--smtp-pass=<password>
SMTP-AUTH 的密碼。該參數(shù)是可選的:如果未指定參數(shù),則將使用空字符串作為密碼。默認值是值sendemail.smtpPass
,但--smtp-pass
總是覆蓋此值。
此外,密碼不需要在配置文件或命令行中指定。如果指定了用戶名(帶有--smtp-user
或sendemail.smtpUser
),但沒有指定密碼(帶有--smtp-pass
或sendemail.smtpPass
),則使用密碼獲取git-credential
。
--smtp-server=<host>
如果設置,則指定要使用的傳出 SMTP 服務器(例如,smtp.example.com
或原始IP地址)?;蛘?,它可以指定類似 sendmail 的程序的完整路徑名; 該計劃必須支持該-i
選項。默認值可以由sendemail.smtpServer
配置選項指定; 內置的默認是/usr/sbin/sendmail
或者/usr/lib/sendmail
如果這樣的程序是可用的,localhost
否則。
--smtp-server-port=<port>
指定一個與默認端口不同的端口(SMTP 服務器通常監(jiān)聽 smtp 端口25,但也可以偵聽提交端口587或公共 SSL smtp 端口465); 符號端口名稱(例如“提交”而不是 587)也被接受。該端口也可以通過sendemail.smtpServerPort
配置變量進行設置。
--smtp-server-option=<option>
如果設置,則指定要使用的傳出 SMTP 服務器選項。默認值可以由sendemail.smtpServerOption
配置選項指定。
對于要傳遞給服務器的每個選項,必須重復--smtp-server-option 選項。同樣,每個選項都必須使用配置文件中的不同行。
--smtp-ssl
舊版別名--smtp-encryption ssl
。
--smtp-ssl-cert-path
用于 SMTP SSL / TLS 證書驗證的可信 CA 證書存儲區(qū)的路徑(可以是經(jīng)過處理的目錄,也可以是c_rehash
包含一個或多個連接在一起的PEM格式證書的單個文件:請參閱 verify(1)-CAfile 和 -CApath for 關于這些的更多信息)。將其設置為空字符串以禁用證書驗證。默認為sendemail.smtpsslcertpath
配置變量的值(如果設置),否則默認情況下支持 SSL 庫的編譯默認值(這應該是大多數(shù)平臺上的最佳選擇)。
--smtp-user=<user>
SMTP-AUTH 的用戶名。默認值是sendemail.smtpUser
; 的值。如果沒有指定用戶名(使用--smtp-user
或sendemail.smtpUser
),則不會嘗試進行身份驗證。
--smtp-debug=0|1
啟用(1)或禁用(0)調試輸出。如果啟用,將打印 SMTP 命令和回復。用于調試 TLS 連接和身份驗證問題。
--batch-size=<num>
一些電子郵件服務器(例如 smtp.163.com)會限制每個會話(連接)發(fā)送的電子郵件數(shù)量,這會在發(fā)送多條消息時導致失敗。使用此選項,send-email 將在發(fā)送$ <num>消息并等待幾秒鐘(請參閱--relogin-delay)并重新連接后斷開連接,以解決此限制。您可能需要使用某種形式的憑證幫助程序,以避免每次發(fā)生這種情況時都必須重新輸入密碼。缺省為sendemail.smtpBatchSize
配置變量。
--relogin-delay=<int>
在重新連接到 SMTP 服務器之前等待$ <int>秒。與--batch-size 選項一起使用。缺省為sendemail.smtpReloginDelay
配置變量。
--to-cmd=<command>
指定一個命令為每個補丁文件執(zhí)行一次,該文件應生成特定于補丁文件的“To:”條目。此命令的輸出必須是每行一個電子郵件地址。默認值是sendemail.tocmd
配置值的值。
--cc-cmd=<command>
指定一個命令為每個補丁文件執(zhí)行一次,該文件應生成補丁文件特定的“Cc:”條目。此命令的輸出必須是每行一個電子郵件地址。默認值是sendemail.ccCmd
配置值的值。
--no-chain-reply-to
如果已設置,每封電子郵件將作為對以前發(fā)送的電子郵件的回復發(fā)送。如果使用“--no-chain-reply-to”禁用,則首先發(fā)送的所有電子郵件將作為回復發(fā)送給第一封電子郵件。當使用這個時,建議給出的第一個文件是整個補丁系列的概述。默認情況下禁用,但sendemail.chainReplyTo
可以使用配置變量啟用它。
--identity=<identity>
配置標識。給出時,導致sendemail.<identity>
子sendemail
部分中的值優(yōu)先于部分中的值。默認標識是的值sendemail.identity
。
--no-signed-off-by-cc
如果已設置,請將添加到 Signed-off-by 或 Cc:行中的電子郵件添加到cc列表。默認值是sendemail.signedoffbycc
配置值的值; 如果沒有指定,默認為 --signed-off-by-cc。
--no-cc-cover
如果已設置,則在該系列的第一個補丁(通常為求職信)中的Cc:標題中找到的電子郵件將添加到每個電子郵件集的cc列表中。默認值是sendemail.cccover
配置值的值; 如果未指定,則默認為--no-cc-cover。
--no-to-cover
如果已設置,則在系列的第一個補?。ㄍǔ榍舐毿牛┲械摹笆占耍骸睒祟}中找到的電子郵件將添加到每個電子郵件集的列表中。默認值是sendemail.tocover
配置值的值; 如果未指定,則默認為 - 不覆蓋。
--suppress-cc=<category>
指定一個額外的收件人類別以禁止以下的自動抄送:
author
將避免包括修補程序作者
self
將避免包括發(fā)件人
cc
將避免在修補程序頭文件中包含Cc行中提到的任何人,除了self(self
用于此目的)。
bodycc
將避免包括在補丁體(提交消息)中的Cc行中提到的任何人,除了self(self
用于此)外。
sob
將避免包括在自簽名外的任何人(除此之外self
)。
cccmd
將避免運行--cc-cmd。
body
相當于sob
+bodycc
all
將抑制所有自動cc值。
默認值是sendemail.suppresscc
配置值的值; 如果沒有指定,則默認為 - self
如果指定了--suppress-from,并且指定了body
--no-signed-off-cc。
--no-suppress-from
如果已設置,請不要將發(fā)件人:地址添加到cc:列表。默認值是sendemail.suppressFrom
配置值的值; 如果未指定,則默認為--no-suppress-from。
--no-thread
如果設置了此項,則會將 In-Reply-To 和 References 標題添加到發(fā)送的每封電子郵件中。每個郵件是指以前的電子郵件(deep
每個git format-patch
字詞的線程)還是第一封電子郵件(shallow
線程)都由“--no-chain-reply-to”來管理。
如果使用“--no-thread”禁用,則不會添加這些標頭(除非用--in-reply-to指定)。默認值是sendemail.thread
配置值的值; 如果未指定,則默認為--thread。
用戶需要確保在git send-email
被要求添加 In-Reply-To 頭時已經(jīng)存在(特別是git format-patch
可以配置為自己執(zhí)行線程)。如果不這樣做,可能無法在收件人的MUA中產生預期結果。
--confirm=<mode>
在發(fā)送之前確認:
always
在發(fā)送之前會一直確認
never
發(fā)送前絕不會確認
cc
將在發(fā)送之前確認發(fā)送電子郵件已自動將補丁中的地址添加到Cc列表
compose
將在使用--compose時發(fā)送第一條消息之前進行確認。
auto
相當于cc
+compose
默認值是sendemail.confirm
配置值的值; 如果未指定,則默認為auto
除非指定了任何禁止選項,在這種情況下,默認值為compose
。
--dry-run
除了實際發(fā)送電子郵件之外,別做任何事
--no-format-patch
當參數(shù)可以理解為參考或文件名時,選擇將其理解為format-patch參數(shù)(--format-patch
)或文件名(--no-format-patch
)。默認情況下,當發(fā)生這種沖突時,git send-email 將會失敗。
--quiet
讓 git-send-email 不那么冗長。每封電子郵件一行應該是輸出的全部內容。
--no-validate
對補丁執(zhí)行完整性檢查。目前,驗證意味著以下內容:
調用 sendemail-validate 掛鉤(如果存在)(請參閱 githooks [5])。
警告包含超過998個字符的行; 這是由于 http://www.ietf.org/rfc/rfc2821.txt中描述的 SMTP 限制。
默認值是sendemail.validate
; 的值。如果未設置,則默認為--validate
。
--force
發(fā)送電子郵件即使安全檢查會阻止它。
--dump-aliases
代替正常操作,從配置的別名文件中轉儲簡寫別名,每行按字母順序排列一個。請注意,這只包含別名,不包括其擴展的電子郵件地址。查看sendemail.aliasesfile
關于別名的更多信息。
sendemail.aliasesFile
為避免輸入長電子郵件地址,請將其指向一個或多個電子郵件別名文件。你還必須提供sendemail.aliasFileType
。
sendemail.aliasFileType
在 sendemail.aliasesFile 中指定的文件格式。必須是一mutt
,mailrc
,pine
,elm
其中之一,或gnus
,或sendmail
。
在同一個名字的電子郵件程序的文檔中可以找到每種格式的別名文件。標準格式的差異和局限性如下所述:
發(fā)送郵件 ( sendmail )
引用的別名和引用地址不受支持:包含"
符號的行將被忽略。
不支持重定向到文件(/path/name
)或管道(|command
)。
文件包含(:include: /path/name
)不受支持。
對于任何顯式不支持的構造以及解析器無法識別的其他行,將在標準錯誤輸出上顯示警告。
sendemail.multiEdit
如果為 true(默認),則會生成單個編輯器實例以編輯您必須編輯的文件(使用補丁時--annotate
,使用摘要時--compose
)。如果為 false,則文件將依次編輯,每次產生一個新的編輯器。
sendemail.confirm
設置發(fā)送前是否確認的默認值。必須是always
,never
,cc
,compose
,或auto
其中之一。請參閱--confirm
上一節(jié)中這些值的含義。
要git send-email
通過 GMail SMTP 服務器發(fā)送補丁,請編輯?/ .gitconfig 指定您的帳戶設置:
[sendemail] smtpEncryption = tls smtpServer = smtp.gmail.com smtpUser = yourname@gmail.com smtpServerPort = 587
如果您的 gmail 帳戶有多因素身份驗證設置,則需要生成特定于應用程序的密碼以供使用git send-email
。訪問 https://security.google.com/settings/security/apppasswords 以設置應用專用密碼。安裝完成后,您可以使用憑據(jù)助手來存儲它:
$ git credential fill protocol=smtp host=smtp.gmail.com username=youname@gmail.com password=app-password
一旦您的提交已準備好發(fā)送到郵件列表,請運行以下命令:
$ git format-patch --cover-letter -M origin/master -o outgoing/$ edit outgoing/0000-*$ git send-email outgoing/*
注意:需要以下 perl 模塊 Net :: SMTP :: SSL,MIME :: Base64 和 Authen :: SASL