]>
Commit | Line | Data |
---|---|---|
1 | git-send-email(1) | |
2 | ================= | |
3 | ||
4 | NAME | |
5 | ---- | |
6 | git-send-email - Send a collection of patches as emails | |
7 | ||
8 | ||
9 | SYNOPSIS | |
10 | -------- | |
11 | [verse] | |
12 | 'git send-email' [<options>] <file|directory|rev-list options>... | |
13 | 'git send-email' --dump-aliases | |
14 | ||
15 | ||
16 | DESCRIPTION | |
17 | ----------- | |
18 | Takes the patches given on the command line and emails them out. | |
19 | Patches can be specified as files, directories (which will send all | |
20 | files in the directory), or directly as a revision list. In the | |
21 | last case, any format accepted by linkgit:git-format-patch[1] can | |
22 | be passed to git send-email. | |
23 | ||
24 | The header of the email is configurable via command-line options. If not | |
25 | specified on the command line, the user will be prompted with a ReadLine | |
26 | enabled interface to provide the necessary information. | |
27 | ||
28 | There are two formats accepted for patch files: | |
29 | ||
30 | 1. mbox format files | |
31 | + | |
32 | This is what linkgit:git-format-patch[1] generates. Most headers and MIME | |
33 | formatting are ignored. | |
34 | ||
35 | 2. The original format used by Greg Kroah-Hartman's 'send_lots_of_email.pl' | |
36 | script | |
37 | + | |
38 | This format expects the first line of the file to contain the "Cc:" value | |
39 | and the "Subject:" of the message as the second line. | |
40 | ||
41 | ||
42 | OPTIONS | |
43 | ------- | |
44 | ||
45 | Composing | |
46 | ~~~~~~~~~ | |
47 | ||
48 | --annotate:: | |
49 | Review and edit each patch you're about to send. Default is the value | |
50 | of `sendemail.annotate`. See the CONFIGURATION section for | |
51 | `sendemail.multiEdit`. | |
52 | ||
53 | --bcc=<address>,...:: | |
54 | Specify a "Bcc:" value for each email. Default is the value of | |
55 | `sendemail.bcc`. | |
56 | + | |
57 | This option may be specified multiple times. | |
58 | ||
59 | --cc=<address>,...:: | |
60 | Specify a starting "Cc:" value for each email. | |
61 | Default is the value of `sendemail.cc`. | |
62 | + | |
63 | This option may be specified multiple times. | |
64 | ||
65 | --compose:: | |
66 | Invoke a text editor (see GIT_EDITOR in linkgit:git-var[1]) | |
67 | to edit an introductory message for the patch series. | |
68 | + | |
69 | When `--compose` is used, git send-email will use the From, Subject, and | |
70 | In-Reply-To headers specified in the message. If the body of the message | |
71 | (what you type after the headers and a blank line) only contains blank | |
72 | (or Git: prefixed) lines, the summary won't be sent, but From, Subject, | |
73 | and In-Reply-To headers will be used unless they are removed. | |
74 | + | |
75 | Missing From or In-Reply-To headers will be prompted for. | |
76 | + | |
77 | See the CONFIGURATION section for `sendemail.multiEdit`. | |
78 | ||
79 | --from=<address>:: | |
80 | Specify the sender of the emails. If not specified on the command line, | |
81 | the value of the `sendemail.from` configuration option is used. If | |
82 | neither the command-line option nor `sendemail.from` are set, then the | |
83 | user will be prompted for the value. The default for the prompt will be | |
84 | the value of GIT_AUTHOR_IDENT, or GIT_COMMITTER_IDENT if that is not | |
85 | set, as returned by "git var -l". | |
86 | ||
87 | --reply-to=<address>:: | |
88 | Specify the address where replies from recipients should go to. | |
89 | Use this if replies to messages should go to another address than what | |
90 | is specified with the --from parameter. | |
91 | ||
92 | --in-reply-to=<identifier>:: | |
93 | Make the first mail (or all the mails with `--no-thread`) appear as a | |
94 | reply to the given Message-Id, which avoids breaking threads to | |
95 | provide a new patch series. | |
96 | The second and subsequent emails will be sent as replies according to | |
97 | the `--[no-]chain-reply-to` setting. | |
98 | + | |
99 | So for example when `--thread` and `--no-chain-reply-to` are specified, the | |
100 | second and subsequent patches will be replies to the first one like in the | |
101 | illustration below where `[PATCH v2 0/3]` is in reply to `[PATCH 0/2]`: | |
102 | + | |
103 | [PATCH 0/2] Here is what I did... | |
104 | [PATCH 1/2] Clean up and tests | |
105 | [PATCH 2/2] Implementation | |
106 | [PATCH v2 0/3] Here is a reroll | |
107 | [PATCH v2 1/3] Clean up | |
108 | [PATCH v2 2/3] New tests | |
109 | [PATCH v2 3/3] Implementation | |
110 | + | |
111 | Only necessary if --compose is also set. If --compose | |
112 | is not set, this will be prompted for. | |
113 | ||
114 | --subject=<string>:: | |
115 | Specify the initial subject of the email thread. | |
116 | Only necessary if --compose is also set. If --compose | |
117 | is not set, this will be prompted for. | |
118 | ||
119 | --to=<address>,...:: | |
120 | Specify the primary recipient of the emails generated. Generally, this | |
121 | will be the upstream maintainer of the project involved. Default is the | |
122 | value of the `sendemail.to` configuration value; if that is unspecified, | |
123 | and --to-cmd is not specified, this will be prompted for. | |
124 | + | |
125 | This option may be specified multiple times. | |
126 | ||
127 | --8bit-encoding=<encoding>:: | |
128 | When encountering a non-ASCII message or subject that does not | |
129 | declare its encoding, add headers/quoting to indicate it is | |
130 | encoded in <encoding>. Default is the value of the | |
131 | 'sendemail.assume8bitEncoding'; if that is unspecified, this | |
132 | will be prompted for if any non-ASCII files are encountered. | |
133 | + | |
134 | Note that no attempts whatsoever are made to validate the encoding. | |
135 | ||
136 | --compose-encoding=<encoding>:: | |
137 | Specify encoding of compose message. Default is the value of the | |
138 | 'sendemail.composeencoding'; if that is unspecified, UTF-8 is assumed. | |
139 | ||
140 | --transfer-encoding=(7bit|8bit|quoted-printable|base64|auto):: | |
141 | Specify the transfer encoding to be used to send the message over SMTP. | |
142 | 7bit will fail upon encountering a non-ASCII message. quoted-printable | |
143 | can be useful when the repository contains files that contain carriage | |
144 | returns, but makes the raw patch email file (as saved from a MUA) much | |
145 | harder to inspect manually. base64 is even more fool proof, but also | |
146 | even more opaque. auto will use 8bit when possible, and quoted-printable | |
147 | otherwise. | |
148 | + | |
149 | Default is the value of the `sendemail.transferEncoding` configuration | |
150 | value; if that is unspecified, default to `auto`. | |
151 | ||
152 | --xmailer:: | |
153 | --no-xmailer:: | |
154 | Add (or prevent adding) the "X-Mailer:" header. By default, | |
155 | the header is added, but it can be turned off by setting the | |
156 | `sendemail.xmailer` configuration variable to `false`. | |
157 | ||
158 | Sending | |
159 | ~~~~~~~ | |
160 | ||
161 | --envelope-sender=<address>:: | |
162 | Specify the envelope sender used to send the emails. | |
163 | This is useful if your default address is not the address that is | |
164 | subscribed to a list. In order to use the 'From' address, set the | |
165 | value to "auto". If you use the sendmail binary, you must have | |
166 | suitable privileges for the -f parameter. Default is the value of the | |
167 | `sendemail.envelopeSender` configuration variable; if that is | |
168 | unspecified, choosing the envelope sender is left to your MTA. | |
169 | ||
170 | --smtp-encryption=<encryption>:: | |
171 | Specify the encryption to use, either 'ssl' or 'tls'. Any other | |
172 | value reverts to plain SMTP. Default is the value of | |
173 | `sendemail.smtpEncryption`. | |
174 | ||
175 | --smtp-domain=<FQDN>:: | |
176 | Specifies the Fully Qualified Domain Name (FQDN) used in the | |
177 | HELO/EHLO command to the SMTP server. Some servers require the | |
178 | FQDN to match your IP address. If not set, git send-email attempts | |
179 | to determine your FQDN automatically. Default is the value of | |
180 | `sendemail.smtpDomain`. | |
181 | ||
182 | --smtp-auth=<mechanisms>:: | |
183 | Whitespace-separated list of allowed SMTP-AUTH mechanisms. This setting | |
184 | forces using only the listed mechanisms. Example: | |
185 | + | |
186 | ------ | |
187 | $ git send-email --smtp-auth="PLAIN LOGIN GSSAPI" ... | |
188 | ------ | |
189 | + | |
190 | If at least one of the specified mechanisms matches the ones advertised by the | |
191 | SMTP server and if it is supported by the utilized SASL library, the mechanism | |
192 | is used for authentication. If neither 'sendemail.smtpAuth' nor `--smtp-auth` | |
193 | is specified, all mechanisms supported by the SASL library can be used. The | |
194 | special value 'none' maybe specified to completely disable authentication | |
195 | independently of `--smtp-user` | |
196 | ||
197 | --smtp-pass[=<password>]:: | |
198 | Password for SMTP-AUTH. The argument is optional: If no | |
199 | argument is specified, then the empty string is used as | |
200 | the password. Default is the value of `sendemail.smtpPass`, | |
201 | however `--smtp-pass` always overrides this value. | |
202 | + | |
203 | Furthermore, passwords need not be specified in configuration files | |
204 | or on the command line. If a username has been specified (with | |
205 | `--smtp-user` or a `sendemail.smtpUser`), but no password has been | |
206 | specified (with `--smtp-pass` or `sendemail.smtpPass`), then | |
207 | a password is obtained using 'git-credential'. | |
208 | ||
209 | --no-smtp-auth:: | |
210 | Disable SMTP authentication. Short hand for `--smtp-auth=none` | |
211 | ||
212 | --smtp-server=<host>:: | |
213 | If set, specifies the outgoing SMTP server to use (e.g. | |
214 | `smtp.example.com` or a raw IP address). Alternatively it can | |
215 | specify a full pathname of a sendmail-like program instead; | |
216 | the program must support the `-i` option. Default value can | |
217 | be specified by the `sendemail.smtpServer` configuration | |
218 | option; the built-in default is to search for `sendmail` in | |
219 | `/usr/sbin`, `/usr/lib` and $PATH if such program is | |
220 | available, falling back to `localhost` otherwise. | |
221 | ||
222 | --smtp-server-port=<port>:: | |
223 | Specifies a port different from the default port (SMTP | |
224 | servers typically listen to smtp port 25, but may also listen to | |
225 | submission port 587, or the common SSL smtp port 465); | |
226 | symbolic port names (e.g. "submission" instead of 587) | |
227 | are also accepted. The port can also be set with the | |
228 | `sendemail.smtpServerPort` configuration variable. | |
229 | ||
230 | --smtp-server-option=<option>:: | |
231 | If set, specifies the outgoing SMTP server option to use. | |
232 | Default value can be specified by the `sendemail.smtpServerOption` | |
233 | configuration option. | |
234 | + | |
235 | The --smtp-server-option option must be repeated for each option you want | |
236 | to pass to the server. Likewise, different lines in the configuration files | |
237 | must be used for each option. | |
238 | ||
239 | --smtp-ssl:: | |
240 | Legacy alias for '--smtp-encryption ssl'. | |
241 | ||
242 | --smtp-ssl-cert-path:: | |
243 | Path to a store of trusted CA certificates for SMTP SSL/TLS | |
244 | certificate validation (either a directory that has been processed | |
245 | by 'c_rehash', or a single file containing one or more PEM format | |
246 | certificates concatenated together: see verify(1) -CAfile and | |
247 | -CApath for more information on these). Set it to an empty string | |
248 | to disable certificate verification. Defaults to the value of the | |
249 | `sendemail.smtpsslcertpath` configuration variable, if set, or the | |
250 | backing SSL library's compiled-in default otherwise (which should | |
251 | be the best choice on most platforms). | |
252 | ||
253 | --smtp-user=<user>:: | |
254 | Username for SMTP-AUTH. Default is the value of `sendemail.smtpUser`; | |
255 | if a username is not specified (with `--smtp-user` or `sendemail.smtpUser`), | |
256 | then authentication is not attempted. | |
257 | ||
258 | --smtp-debug=0|1:: | |
259 | Enable (1) or disable (0) debug output. If enabled, SMTP | |
260 | commands and replies will be printed. Useful to debug TLS | |
261 | connection and authentication problems. | |
262 | ||
263 | --batch-size=<num>:: | |
264 | Some email servers (e.g. smtp.163.com) limit the number emails to be | |
265 | sent per session (connection) and this will lead to a failure when | |
266 | sending many messages. With this option, send-email will disconnect after | |
267 | sending $<num> messages and wait for a few seconds (see --relogin-delay) | |
268 | and reconnect, to work around such a limit. You may want to | |
269 | use some form of credential helper to avoid having to retype | |
270 | your password every time this happens. Defaults to the | |
271 | `sendemail.smtpBatchSize` configuration variable. | |
272 | ||
273 | --relogin-delay=<int>:: | |
274 | Waiting $<int> seconds before reconnecting to SMTP server. Used together | |
275 | with --batch-size option. Defaults to the `sendemail.smtpReloginDelay` | |
276 | configuration variable. | |
277 | ||
278 | Automating | |
279 | ~~~~~~~~~~ | |
280 | ||
281 | --to-cmd=<command>:: | |
282 | Specify a command to execute once per patch file which | |
283 | should generate patch file specific "To:" entries. | |
284 | Output of this command must be single email address per line. | |
285 | Default is the value of 'sendemail.tocmd' configuration value. | |
286 | ||
287 | --cc-cmd=<command>:: | |
288 | Specify a command to execute once per patch file which | |
289 | should generate patch file specific "Cc:" entries. | |
290 | Output of this command must be single email address per line. | |
291 | Default is the value of `sendemail.ccCmd` configuration value. | |
292 | ||
293 | --[no-]chain-reply-to:: | |
294 | If this is set, each email will be sent as a reply to the previous | |
295 | email sent. If disabled with "--no-chain-reply-to", all emails after | |
296 | the first will be sent as replies to the first email sent. When using | |
297 | this, it is recommended that the first file given be an overview of the | |
298 | entire patch series. Disabled by default, but the `sendemail.chainReplyTo` | |
299 | configuration variable can be used to enable it. | |
300 | ||
301 | --identity=<identity>:: | |
302 | A configuration identity. When given, causes values in the | |
303 | 'sendemail.<identity>' subsection to take precedence over | |
304 | values in the 'sendemail' section. The default identity is | |
305 | the value of `sendemail.identity`. | |
306 | ||
307 | --[no-]signed-off-by-cc:: | |
308 | If this is set, add emails found in Signed-off-by: or Cc: lines to the | |
309 | cc list. Default is the value of `sendemail.signedoffbycc` configuration | |
310 | value; if that is unspecified, default to --signed-off-by-cc. | |
311 | ||
312 | --[no-]cc-cover:: | |
313 | If this is set, emails found in Cc: headers in the first patch of | |
314 | the series (typically the cover letter) are added to the cc list | |
315 | for each email set. Default is the value of 'sendemail.cccover' | |
316 | configuration value; if that is unspecified, default to --no-cc-cover. | |
317 | ||
318 | --[no-]to-cover:: | |
319 | If this is set, emails found in To: headers in the first patch of | |
320 | the series (typically the cover letter) are added to the to list | |
321 | for each email set. Default is the value of 'sendemail.tocover' | |
322 | configuration value; if that is unspecified, default to --no-to-cover. | |
323 | ||
324 | --suppress-cc=<category>:: | |
325 | Specify an additional category of recipients to suppress the | |
326 | auto-cc of: | |
327 | + | |
328 | -- | |
329 | - 'author' will avoid including the patch author. | |
330 | - 'self' will avoid including the sender. | |
331 | - 'cc' will avoid including anyone mentioned in Cc lines in the patch header | |
332 | except for self (use 'self' for that). | |
333 | - 'bodycc' will avoid including anyone mentioned in Cc lines in the | |
334 | patch body (commit message) except for self (use 'self' for that). | |
335 | - 'sob' will avoid including anyone mentioned in Signed-off-by lines except | |
336 | for self (use 'self' for that). | |
337 | - 'misc-by' will avoid including anyone mentioned in Acked-by, | |
338 | Reviewed-by, Tested-by and other "-by" lines in the patch body, | |
339 | except Signed-off-by (use 'sob' for that). | |
340 | - 'cccmd' will avoid running the --cc-cmd. | |
341 | - 'body' is equivalent to 'sob' + 'bodycc' + 'misc-by'. | |
342 | - 'all' will suppress all auto cc values. | |
343 | -- | |
344 | + | |
345 | Default is the value of `sendemail.suppresscc` configuration value; if | |
346 | that is unspecified, default to 'self' if --suppress-from is | |
347 | specified, as well as 'body' if --no-signed-off-cc is specified. | |
348 | ||
349 | --[no-]suppress-from:: | |
350 | If this is set, do not add the From: address to the cc: list. | |
351 | Default is the value of `sendemail.suppressFrom` configuration | |
352 | value; if that is unspecified, default to --no-suppress-from. | |
353 | ||
354 | --[no-]thread:: | |
355 | If this is set, the In-Reply-To and References headers will be | |
356 | added to each email sent. Whether each mail refers to the | |
357 | previous email (`deep` threading per 'git format-patch' | |
358 | wording) or to the first email (`shallow` threading) is | |
359 | governed by "--[no-]chain-reply-to". | |
360 | + | |
361 | If disabled with "--no-thread", those headers will not be added | |
362 | (unless specified with --in-reply-to). Default is the value of the | |
363 | `sendemail.thread` configuration value; if that is unspecified, | |
364 | default to --thread. | |
365 | + | |
366 | It is up to the user to ensure that no In-Reply-To header already | |
367 | exists when 'git send-email' is asked to add it (especially note that | |
368 | 'git format-patch' can be configured to do the threading itself). | |
369 | Failure to do so may not produce the expected result in the | |
370 | recipient's MUA. | |
371 | ||
372 | ||
373 | Administering | |
374 | ~~~~~~~~~~~~~ | |
375 | ||
376 | --confirm=<mode>:: | |
377 | Confirm just before sending: | |
378 | + | |
379 | -- | |
380 | - 'always' will always confirm before sending | |
381 | - 'never' will never confirm before sending | |
382 | - 'cc' will confirm before sending when send-email has automatically | |
383 | added addresses from the patch to the Cc list | |
384 | - 'compose' will confirm before sending the first message when using --compose. | |
385 | - 'auto' is equivalent to 'cc' + 'compose' | |
386 | -- | |
387 | + | |
388 | Default is the value of `sendemail.confirm` configuration value; if that | |
389 | is unspecified, default to 'auto' unless any of the suppress options | |
390 | have been specified, in which case default to 'compose'. | |
391 | ||
392 | --dry-run:: | |
393 | Do everything except actually send the emails. | |
394 | ||
395 | --[no-]format-patch:: | |
396 | When an argument may be understood either as a reference or as a file name, | |
397 | choose to understand it as a format-patch argument (`--format-patch`) | |
398 | or as a file name (`--no-format-patch`). By default, when such a conflict | |
399 | occurs, git send-email will fail. | |
400 | ||
401 | --quiet:: | |
402 | Make git-send-email less verbose. One line per email should be | |
403 | all that is output. | |
404 | ||
405 | --[no-]validate:: | |
406 | Perform sanity checks on patches. | |
407 | Currently, validation means the following: | |
408 | + | |
409 | -- | |
410 | * Invoke the sendemail-validate hook if present (see linkgit:githooks[5]). | |
411 | * Warn of patches that contain lines longer than | |
412 | 998 characters unless a suitable transfer encoding | |
413 | ('auto', 'base64', or 'quoted-printable') is used; | |
414 | this is due to SMTP limits as described by | |
415 | http://www.ietf.org/rfc/rfc5322.txt. | |
416 | -- | |
417 | + | |
418 | Default is the value of `sendemail.validate`; if this is not set, | |
419 | default to `--validate`. | |
420 | ||
421 | --force:: | |
422 | Send emails even if safety checks would prevent it. | |
423 | ||
424 | ||
425 | Information | |
426 | ~~~~~~~~~~~ | |
427 | ||
428 | --dump-aliases:: | |
429 | Instead of the normal operation, dump the shorthand alias names from | |
430 | the configured alias file(s), one per line in alphabetical order. Note, | |
431 | this only includes the alias name and not its expanded email addresses. | |
432 | See 'sendemail.aliasesfile' for more information about aliases. | |
433 | ||
434 | ||
435 | CONFIGURATION | |
436 | ------------- | |
437 | ||
438 | sendemail.aliasesFile:: | |
439 | To avoid typing long email addresses, point this to one or more | |
440 | email aliases files. You must also supply `sendemail.aliasFileType`. | |
441 | ||
442 | sendemail.aliasFileType:: | |
443 | Format of the file(s) specified in sendemail.aliasesFile. Must be | |
444 | one of 'mutt', 'mailrc', 'pine', 'elm', or 'gnus', or 'sendmail'. | |
445 | + | |
446 | What an alias file in each format looks like can be found in | |
447 | the documentation of the email program of the same name. The | |
448 | differences and limitations from the standard formats are | |
449 | described below: | |
450 | + | |
451 | -- | |
452 | sendmail;; | |
453 | * Quoted aliases and quoted addresses are not supported: lines that | |
454 | contain a `"` symbol are ignored. | |
455 | * Redirection to a file (`/path/name`) or pipe (`|command`) is not | |
456 | supported. | |
457 | * File inclusion (`:include: /path/name`) is not supported. | |
458 | * Warnings are printed on the standard error output for any | |
459 | explicitly unsupported constructs, and any other lines that are not | |
460 | recognized by the parser. | |
461 | -- | |
462 | ||
463 | sendemail.multiEdit:: | |
464 | If true (default), a single editor instance will be spawned to edit | |
465 | files you have to edit (patches when `--annotate` is used, and the | |
466 | summary when `--compose` is used). If false, files will be edited one | |
467 | after the other, spawning a new editor each time. | |
468 | ||
469 | sendemail.confirm:: | |
470 | Sets the default for whether to confirm before sending. Must be | |
471 | one of 'always', 'never', 'cc', 'compose', or 'auto'. See `--confirm` | |
472 | in the previous section for the meaning of these values. | |
473 | ||
474 | EXAMPLES | |
475 | -------- | |
476 | Use gmail as the smtp server | |
477 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
478 | To use 'git send-email' to send your patches through the GMail SMTP server, | |
479 | edit ~/.gitconfig to specify your account settings: | |
480 | ||
481 | [sendemail] | |
482 | smtpEncryption = tls | |
483 | smtpServer = smtp.gmail.com | |
484 | smtpUser = yourname@gmail.com | |
485 | smtpServerPort = 587 | |
486 | ||
487 | If you have multifactor authentication setup on your gmail account, you will | |
488 | need to generate an app-specific password for use with 'git send-email'. Visit | |
489 | https://security.google.com/settings/security/apppasswords to create it. | |
490 | ||
491 | Once your commits are ready to be sent to the mailing list, run the | |
492 | following commands: | |
493 | ||
494 | $ git format-patch --cover-letter -M origin/master -o outgoing/ | |
495 | $ edit outgoing/0000-* | |
496 | $ git send-email outgoing/* | |
497 | ||
498 | The first time you run it, you will be prompted for your credentials. Enter the | |
499 | app-specific or your regular password as appropriate. If you have credential | |
500 | helper configured (see linkgit:git-credential[1]), the password will be saved in | |
501 | the credential store so you won't have to type it the next time. | |
502 | ||
503 | Note: the following perl modules are required | |
504 | Net::SMTP::SSL, MIME::Base64 and Authen::SASL | |
505 | ||
506 | SEE ALSO | |
507 | -------- | |
508 | linkgit:git-format-patch[1], linkgit:git-imap-send[1], mbox(5) | |
509 | ||
510 | GIT | |
511 | --- | |
512 | Part of the linkgit:git[1] suite |