SYNOPSIS
git send-email [<options>] <file|directory|rev-list options>… git send-email --dump-aliases
DESCRIPTION
コマンドラインで指定されたパッチを取得し、電子メールで送信します。
パッチは、ファイルまたは、ディレクトリ(ディレクトリ内のすべてのファイルを送信します)または、リビジョンリストとして直接指定できます。
リビジョンリストの場合、git-format-patch(1) によって受け入れられた任意の形式を git send-email
に渡すことができます。
電子メールのヘッダーは、コマンドラインオプションを使用して構成できます。 コマンドラインで指定されていない場合、ReadLine対応のインターフェイスでユーザーが必要な情報を提供するためのプロンプトが表示されます。
パッチファイルに使用できる形式は2つあります:
-
mbox形式ファイル
これは、 git-format-patch(1) が生成するものです。 ほとんどのヘッダーとMIMEフォーマットは無視されます。
-
Greg Kroah-Hartman の
send_lots_of_email.plスクリプトで使用されたオリジナル形式この形式では、ファイルの1行目に「Cc:」値が含まれ、2行目としてメッセージの「Subject:」が含まれている必要があります。
OPTIONS
電子メール作成
-
--annotate -
送信しようとしている各パッチを確認して編集します。 デフォルトは
sendemail.annotateの値です。 `sendemail.multiEdit`の「CONFIGURATION」セクションを参照してください。 -
--bcc=<address>,... -
メールごとに「Bcc:」の値を指定します。 デフォルトは
sendemail.bccの値です。このオプションは複数回指定できます。
-
--cc=<address>,... -
各電子メールの開始「Cc:」値(starting "Cc:" value)を指定します。 デフォルトは
sendemail.ccの値です。このオプションは複数回指定できます。
-
--compose -
テキストエディタ(git-var(1)の GIT_EDITOR 参照)を呼び出して、パッチシリーズの紹介メッセージ(introductory message)を編集します。
--composeが使用されている場合、git send-emailは、メッセージで指定されているFromとSubjectとIn-Reply-Toヘッダーを使用します。 メッセージの本文(ヘッダーと空行の後に入力するもの)に空行(または Git: プレフィックス)のみが含まれている場合、要約は送信されませんが、FromとSubjectとIn-Reply-Toヘッダーは削除されない限り使用されます。From ヘッダー または In-Reply-To ヘッダーが無い時はプロンプトが表示されます。
sendemail.multiEditの「CONFIGURATION」セクションを参照してください。 -
--from=<address> -
電子メールの送信者(sender)を指定します。 コマンドラインで指定されていない場合は、
sendemail.from構成オプションの値が使用されます。 コマンドラインオプションもsendemail.fromも設定されていない場合、ユーザーは値の入力を求められます。 そのプロンプトのデフォルトは、git var -lによって返される、GIT_AUTHOR_IDENTの値、または、GIT_AUTHOR_IDENTが設定されていない場合はGIT_COMMITTER_IDENTの値になります。 -
--reply-to=<address> -
受信者からの返信先(reply)のアドレスを指定します。 メッセージへの応答(reply)が
--fromパラメーターで指定されたものとは別のアドレスに送信される必要がある場合は、これを使用します。 -
--in-reply-to=<identifier> -
最初のメール(または
--no-thread指定の全てのメール)を、指定の Message-Id への応答(reply)として表示します。これにより、スレッドが壊れて新しいパッチシリーズが提供されるのを防ぎます。 2回目以降のメールは、--[no-]chain-reply-to設定に従って返信(reply)として送信されます。そのため、例えば
--threadと--no-chain-reply-toを指定すると、以下のように[PATCH v2 0/3]が[PATCH 0/2]に対する返信になるように、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>,... -
生成された電子メールの主な受信者(primary recipient)を指定します。 通常、これは関連するプロジェクトの上流のメンテナになります。 デフォルトは、
sendemail.to構成値の値です。 それが指定されておらず、--to-cmdが指定されていない場合、プロンプトが表示されます。このオプションは複数回指定できます。
-
--8bit-encoding=<encoding> -
エンコードを宣言していない非ASCIIメッセージまたは件名に遭遇した場合は、 ヘッダー/引用符 を追加して、<encoding>でエンコードされていることを示します。 デフォルトは
sendemail.assume8bitEncodingの値です。 それが指定されていない場合に非ASCIIファイルが検出された場合はプロンプトが表示されます。注意:エンコーディングを検証する試みは一切行われないことに注意してください。
-
--compose-encoding=<encoding> -
作成するッセージのエンコードを指定します。 デフォルトは
sendemail.composeencodingの値です。 それが指定されていない場合は、UTF-8 を想定されます。 -
--transfer-encoding=(7bit|8bit|quoted-printable|base64|auto) -
SMTP経由でメッセージを送信するために使用する転送エンコーディングを指定します。 非ASCIIメッセージに遭遇すると、
7bitは失敗します。quoted-printableは、リポジトリにキャリッジリターンを含むファイルが含まれている場合に役立ちますが、生のパッチ電子メールファイル(MUAで保存されたもの)を手動で検査するのがとても難しくなります。base64はさらに確実ですが、さらに不透明です。autoは、可能な場合は8ビットを使用し、それ以外の場合はquoted-printableを使用します。デフォルトは、
sendemail.transferEncoding構成値です。 それが指定されていない場合、デフォルトはautoです。 -
--xmailer -
--no-xmailer -
X-Mailer:ヘッダーを追加(または追加を防止)します。 デフォルトでは追加されますが、sendemail.xmailer構成変数をfalseに設定することでオフにできます。
電子メール送信
-
--envelope-sender=<address> -
メールの送信に使用するエンベロープ(envelope)の送信者を指定します。 これは、デフォルトのメールアドレスがメーリングリストに申し込まれているメールアドレスではない場合に役立ちます。
Fromアドレスを使用するには、値をauto」に設定します。 sendmailバイナリを使用する場合は、-fパラメータに適切な権限が必要です。 デフォルトは、sendemail.envelopeSender構成変数の値です。 それが指定されていない場合、エンベロープ送信者の選択はMTAに任されています。 -
--sendmail-cmd=<command> -
電子メールを送信するために実行するコマンドを指定します。 コマンドはsendmailのようなものでなければなりません。 具体的には、
-iオプションをサポートする必要があります。 コマンドは、必要に応じてシェルで実行されます。 デフォルトはsendemail.sendmailcmd構成の値です。sendemail.sendmailcmd構成の値が指定されていない場合、かつ、--smtp-serverも指定されていない場合、git-send-emailは/usr/sbinと/usr/libと $PATH でsendmailを検索します。 -
--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メカニズムの空白で区切られた(Whitespace-separated)リスト。 この設定は、リストされたメカニズムのみを使用するように強制します。 例:
$ git send-email --smtp-auth="PLAIN LOGIN GSSAPI" ...指定されたメカニズムの少なくとも1つがSMTPサーバによって宣伝(advertise)されたメカニズムと一致し、利用されるSASLライブラリによってサポートされている場合、そのメカニズムが認証に使用されます。
sendemail.smtpAuthと--smtp-authのどちらも指定されない場合、SASL ライブラリでサポートされているすべてのメカニズムが使用される可能性があります。 特別な値としてnoneを指定すると、--smtp-userと独立して認証を完全に無効にすることができます。 -
--smtp-pass[=<password>] -
SMTP-AUTHのパスワード。 引数はオプションです。引数が指定されていない場合は、空の文字列がパスワードとして使用されます。 デフォルトは
sendemail.smtpPassの値ですが、--smtp-passは常にsendemail.smtpPassの値を上書きします。さらに、パスワードを構成ファイルまたはコマンドラインで指定する必要はありません。 ユーザー名が指定されている(
--smtp-userまたはsendemail.smtpUserを使用)が、パスワードが指定されていない(--smtp-passまたはsendemail.smtpPassを使用)場合、パスワードgit-credentialを使用して取得されます。 -
--no-smtp-auth -
SMTP認証を無効にします。
--smtp-auth=noneの省略形 -
--smtp-server=<host> -
設定されている場合、使用する送信SMTPサーバを指定します(例:
smtp.example.comまたは生のIPアドレス)。 これが未指定の場合で、かつ、--sendmail-cmdも未指定の場合、デフォルトでは/usr/sbinと/usr/libと $PATH にあるsendmailを探します。それが存在しなければlocalhostにフォールバックされます。下位互換性のために、このオプションでは、代わりにsendmailのようなプログラムの絶対パス名を指定することもできます。 プログラムは
-iオプションをサポートする必要があります。 このメソッドは、引数の受け渡しや平文コマンド名の使用をサポートしていません。 これらの場合には、代わりに--sendmail-cmdの使用を検討してください。 -
--smtp-server-port=<port> -
デフォルトのポートとは異なるポートを指定します(SMTPサーバーは通常smtpポート25をリッスンしますが、送信ポート587または共通のSSL smtpポート465もリッスンする場合があります)。 シンボリックポート名(たとえば、587ではなく "submission")も受け入れられます。 ポートは、
sendemail.smtpServerPort構成変数を使用して設定することもできます。 -
--smtp-server-option=<option> -
設定されている場合、使用する送信SMTPサーバーオプションを指定します。 デフォルト値は、
sendemail.smtpServerOption構成オプションで指定できます。--smtp-server-optionオプションは、サーバーに渡すオプションごとに繰り返す必要があります。 同様に、構成ファイルではオプションごとに異なる行を使用する必要があります。 -
--smtp-ssl -
--smtp-encryptionssl の、大昔からのエイリアス。
-
--smtp-ssl-cert-path -
SMTP SSL/TLS 証明書検証用の信頼できるCA証明書のストアへのパス(
c_rehashによって処理されたディレクトリ、または1つ以上のPEM形式の証明書が連結された単一のファイル: これらの詳細については、 verify(1) の-CAfileと-CApathを参照してください)。 証明書の検証を無効にするには、空の文字列に設定します。 デフォルトは、設定されている場合はsendemail.smtpsslcertpath構成変数の値、それ以外の場合はバッキングSSLライブラリのコンパイル済みデフォルト(ほとんどのプラットフォームで最良の選択)です。 -
--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)では、セッション(または接続)ごとに送信される電子メールの数が制限されているため、多くのメッセージを送信すると失敗します。 このオプションを使用すると、
send-emailは <num> メッセージの送信後に切断され、数秒待って(--relogin-delay参照)、再接続して、このような制限を回避します。 これが発生するたびにパスワードを再入力する必要がないように、何らかの形式のクレデンシャルヘルパーを使用することをお勧めします。 デフォルトはsendemail.smtpBatchSize構成変数です。 -
--relogin-delay=<int> -
SMTPサーバーに再接続する前に <int> 秒待機します。
--batch-sizeオプションと一緒に使用します。 デフォルトはsendemail.smtpReloginDelay構成変数です。
自動化
-
--no-[to|cc|bcc] -
configで以前に設定した "To:" と "Cc:" と "Bcc:" アドレスのリストをすべてクリアします。
-
--no-identity -
configで設定された
sendemail.identityから読み取られた値があるならば、その値をクリアします。 -
--to-cmd=<command> -
パッチファイルごとに1回実行するコマンドを指定し、パッチファイル固有の
To:エントリーを生成するようにします。 このコマンドの出力は、1行に1つの電子メールアドレスでなければなりません。 デフォルトは、設定値sendemail.tocmdの値です。 -
--cc-cmd=<command> -
パッチファイルごとに1回実行するコマンドを指定し、パッチファイル固有の
Cc:エントリを生成するようにします。 このコマンドの出力は、1行に1つの電子メールアドレスでなければなりません。 デフォルトはsendemail.ccCmd設定値の値です。 -
--[no-]chain-reply-to -
これが設定されている場合、各メールは前に送信されたメールへの返信として送信されます。
--no-chain-reply-toで無効にすると、最初の電子メール以降のすべての電子メールが、最初に送信された電子メールへの返信として送信されます。 これを使用する場合、最初のファイルはパッチシリーズ全体の概要であることが推奨されます。 デフォルトでは無効になっていますが、sendemail.chainReplyTo構成変数を使用して有効にすることができます。 -
--identity=<identity> -
構成ID。 指定すると、
sendemail.<identity>サブセクションの値がsendemailセクションの値よりも優先されます。 デフォルトのIDは、 `sendemail.identity`の値です。 -
--[no-]signed-off-by-cc -
これが設定されている場合は、
Signed-off-byトレーラーまたはCc:行にある電子メールアドレスをccリストに追加します。 デフォルトはsendemail.signedoffbycc構成変数の値です。sendemail.signedoffbycc構成変数が指定されていない場合、デフォルトは--signed-off-by-ccです。 -
--[no-]cc-cover -
これが設定されている場合、シリーズの最初のパッチ(通常はカバーレター)の
Cc:ヘッダー達で見つかった電子メールアドレスが、各電子メールアドレスのセットのccリストに追加されます。 デフォルトは、sendemail.cccover構成の値です。sendemail.cccover構成が指定されていない場合、デフォルトは--no-cc-coverです。 -
--[no-]to-cover -
これが設定されている場合、シリーズの最初のパッチ(通常はカバーレター)の
To:ヘッダー達で見つかった電子メールアドレスが、各電子メールアドレスのセットのtoリストに追加されます。 デフォルトは、sendemail.tocover構成の値です。sendemail.tocover構成の値が指定されていない場合、デフォルトで--no-to-coverになります。 -
--suppress-cc=<category> -
自動CC(auto-cc)を抑制するために、以下の追加受信者カテゴリを指定します:
-
authorは、パッチの作者を含めないようにします。 -
selfは送信者を含めないようにします。 -
ccは、selfを指定した場合を除き、Cc行で言及されている人をパッチヘッダーに含めないようにします(含めたいなら self を使用します)。 -
bodyccは、selfを指定した場合を除き、 パッチ本体(コミットメッセージ)にCc行で言及されている人を含めないようにします(含めたい場合は self を使います)。 -
sobは、selfを指定している場合を除き、 Signed-off-by に記載されている人を含めないようにします(含めたい場合はselfを使用します)。 -
misc-byは、Signed-off-by(sobを使用)を除いて、パッチ本体に Acked-byや、Reviewed-byや、Tested-byや、その他の-by行で言及されているのを含めないようにします。 -
cccmdは、--cc-cmdの実行を回避します。 -
bodyはsob+bodycc+misc-byと同じです。 -
allは、すべての自動cc値を抑制します。
デフォルトは
sendemail.suppresscc構成の値です。sendemail.suppresscc構成が指定されていない場合に、--suppress-fromが指定されている場合はデフォルトでselfになり、--no-signed-off-ccが指定されている場合はbodyになります。 -
-
--[no-]suppress-from -
これが設定されている場合は、
From:アドレス をcc:リストに追加しないでください。 デフォルトはsendemail.suppressFrom構成の値です。sendemail.suppressFrom構成が指定されていない場合、デフォルトは--no-suppress-fromです。 -
--[no-]thread -
これが設定されている場合、In-Reply-To と References ヘッダー達は送信される各メールアドレスに追加されます。 各メールが前のメールを参照するのか(
git format-patchの文言に従った「深い」(deep)スレッディング)、最初のメールを参照するのか(「浅い」(shallow)スレッディング)については--[no-]chain-reply-toで制御されます。--no-threadで無効にすると、それらのヘッダーは追加されません(--in-reply-toで指定されていない限り)。 デフォルトは、sendemail.thread構成の値です。sendemail.thread構成が指定されていない場合、デフォルトは--threadです。git send-emailが In-Reply-To ヘッダを追加するように要求したときに、すでにそのヘッダが存在しないことを確認するのはユーザー側です((特にgit format-patchがスレッド化するように設定されている場合は注意が必要です)。 これを怠ると、受信者の MUA で期待通りの結果が得られないことがあります。
管理
-
--confirm=<mode> -
送信する直前に確認(confirm)します:
-
alwaysは送信前に常に確認します -
neverは送信する前に確認すること決してありません -
ccは、send-emailがパッチからCcリストにアドレスを自動的に追加したときは、送信前に確認します -
composeは、--composeを使用した時に、最初のメッセージを送信する前に確認します。 -
autoはcc+composeと同じです
デフォルトは
sendemail.confirm構成の値です。sendemail.confirm構成が指定されていない場合、抑制オプション(suppress options)のいずれかが指定されていない限り、デフォルトはautoになります。抑制オプションのいずれかが指定されている場合は、デフォルトで `compose`になります。 -
-
--dry-run -
実際にメールを送信する以外はすべて行います。
-
--[no-]format-patch -
引数が参照またはファイル名として理解される場合は、それをformat-patch引数(
--format-patch)またはファイル名(--no-format-patch)として理解することを選択します。 デフォルトでは、このような競合が発生すると、git send-emailは失敗します。 -
--quiet -
git-send-emailのおしゃべりを減らします。 電子メール1通につき1行出力するだけにします。
-
--[no-]validate -
パッチの健全性チェックを実行します。 現状、検証(validation)とは以下のことを意味します:
-
sendemail-validate フックが存在する場合はそれを呼び出します(githooks(5) 参照)。
-
適切な転送エンコーディング(
autoまたはbase64またはquoted-printable)が使用されていない時は、998文字より長い行を含むパッチについて警告します。 これは、 http://www.ietf.org/rfc/rfc5322.txt で説明されているSMTPの制限によるものです。
デフォルトは
sendemail.validateの値です。 これが設定されていない場合、デフォルトは--validateになります。 -
-
--force -
安全チェックで防止できる場合でも、電子メールを送信してください。
情報
-
--dump-aliases -
通常の操作の代わりに、構成されたエイリアスファイルからアルファベット順に1行に1つずつ短縮エイリアス名をダンプします。 これにはエイリアス名のみが含まれ、拡張された電子メールアドレスは含まれないことに注意してください。 エイリアスの詳細については、
sendemail.aliasesfileを参照してください。
CONFIGURATION
- sendemail.aliasesFile
-
長いメールアドレスを入力しないようにするには、これが1つ以上のメールエイリアスファイルを指すようにします。
sendemail.aliasFileTypeも指定する必要があります。 - sendemail.aliasFileType
-
sendemail.aliasesFile で指定するファイルの形式。
mutt,mailrc,pine,elm,gnusのいずれか、またはsendmailである必要があります。各形式のエイリアスファイルがどのように見えるかは、同じ名前の電子メールプログラムのドキュメントに記載されています。 標準フォーマットとの違いと制限を以下で説明します:
- sendmail
-
-
クォートされたエイリアスとクォートされたアドレスはサポートされていません。
"記号を含む行は無視されます。 -
ファイル(
/path/name)またはパイプ(|command)へのリダイレクトはサポートされていません。 -
ファイルのインクルード(
:include: /path/name)はサポートされていません。 -
明示的にサポートされていない構文や、パーサーが認識できないその他の行については、標準エラー出力に警告が表示されます。
-
- sendemail.multiEdit
-
true(デフォルト)の場合、編集する必要のあるファイルを編集するために単一のエディターインスタンスが生成されます(
--annotateが使用されている場合はパッチ、--composeが使用されている場合はサマリー)。 falseの場合、ファイルは次々に編集され、毎回新しいエディターインスタンスが生成されます。 - sendemail.confirm
-
送信前に確認するかどうかのデフォルトを設定します。
alwaysまたはneverまたはccまたはcomposeまたはautoのいずれかである必要があります。 これらの値の意味については、前セクションの--confirmを参照してください。
EXAMPLES
Use gmail as the smtp server
git send-email を使用してGMail SMTPサーバーを介してパッチを送信するには、 ~/.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 にアクセスして作成します。
Gmailアカウントで多要素認証を設定していない場合、「安全性の低いアプリのアクセス」を許可する必要があります。 https://myaccount.google.com/lesssecureapps にアクセスして有効にします。
あなたのコミットをメーリングリストに送信する準備ができたら、以下のコマンドを実行します:
$ git format-patch --cover-letter -M origin/master -o outgoing/
$ edit outgoing/0000-*
$ git send-email outgoing/*
初めて実行すると、資格情報の入力を求められます。 必要に応じて、アプリ固有のパスワードまたは通常のパスワードを入力します。 クレデンシャルヘルパーを構成している場合(git-credential(1) 参照)、パスワードはクレデンシャルストアに保存されるため、次回入力する必要はありません。
注意: Perlのディストリビューションとともにインストールできる次のコアPerlモジュールが必要です: MIME::Base64 と
MIME::QuotedPrint と Net::Domain と Net::SMTP 。 また、次の追加のPerlモジュールも必要です:
Authen::SASL と Mail::Address 。
SEE ALSO
git-format-patch(1), git-imap-send(1), mbox(5)
GIT
Part of the git(1) suite