]>
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 | 'git send-email' [options] <file|directory|rev-list options>... | |
12 | ||
13 | ||
14 | DESCRIPTION | |
15 | ----------- | |
16 | Takes the patches given on the command line and emails them out. | |
17 | Patches can be specified as files, directories (which will send all | |
18 | files in the directory), or directly as a revision list. In the | |
19 | last case, any format accepted by linkgit:git-format-patch[1] can | |
20 | be passed to git send-email. | |
21 | ||
22 | The header of the email is configurable by command line options. If not | |
23 | specified on the command line, the user will be prompted with a ReadLine | |
24 | enabled interface to provide the necessary information. | |
25 | ||
26 | There are two formats accepted for patch files: | |
27 | ||
28 | 1. mbox format files | |
29 | + | |
30 | This is what linkgit:git-format-patch[1] generates. Most headers and MIME | |
31 | formatting are ignored. | |
32 | ||
33 | 2. The original format used by Greg Kroah-Hartman's 'send_lots_of_email.pl' | |
34 | script | |
35 | + | |
36 | This format expects the first line of the file to contain the "Cc:" value | |
37 | and the "Subject:" of the message as the second line. | |
38 | ||
39 | ||
40 | OPTIONS | |
41 | ------- | |
42 | ||
43 | Composing | |
44 | ~~~~~~~~~ | |
45 | ||
46 | --annotate:: | |
47 | Review and edit each patch you're about to send. See the | |
48 | CONFIGURATION section for 'sendemail.multiedit'. | |
49 | ||
50 | --bcc=<address>:: | |
51 | Specify a "Bcc:" value for each email. Default is the value of | |
52 | 'sendemail.bcc'. | |
53 | + | |
54 | The --bcc option must be repeated for each user you want on the bcc list. | |
55 | ||
56 | --cc=<address>:: | |
57 | Specify a starting "Cc:" value for each email. | |
58 | Default is the value of 'sendemail.cc'. | |
59 | + | |
60 | The --cc option must be repeated for each user you want on the cc list. | |
61 | ||
62 | --compose:: | |
63 | Invoke a text editor (see GIT_EDITOR in linkgit:git-var[1]) | |
64 | to edit an introductory message for the patch series. | |
65 | + | |
66 | When '--compose' is used, git send-email will use the From, Subject, and | |
67 | In-Reply-To headers specified in the message. If the body of the message | |
68 | (what you type after the headers and a blank line) only contains blank | |
69 | (or GIT: prefixed) lines the summary won't be sent, but From, Subject, | |
70 | and In-Reply-To headers will be used unless they are removed. | |
71 | + | |
72 | Missing From or In-Reply-To headers will be prompted for. | |
73 | + | |
74 | See the CONFIGURATION section for 'sendemail.multiedit'. | |
75 | ||
76 | --from=<address>:: | |
77 | Specify the sender of the emails. If not specified on the command line, | |
78 | the value of the 'sendemail.from' configuration option is used. If | |
79 | neither the command line option nor 'sendemail.from' are set, then the | |
80 | user will be prompted for the value. The default for the prompt will be | |
81 | the value of GIT_AUTHOR_IDENT, or GIT_COMMITTER_IDENT if that is not | |
82 | set, as returned by "git var -l". | |
83 | ||
84 | --in-reply-to=<identifier>:: | |
85 | Make the first mail (or all the mails with `--no-thread`) appear as a | |
86 | reply to the given Message-Id, which avoids breaking threads to | |
87 | provide a new patch series. | |
88 | The second and subsequent emails will be sent as replies according to | |
89 | the `--[no]-chain-reply-to` setting. | |
90 | + | |
91 | So for example when `--thread` and `--no-chain-reply-to` are specified, the | |
92 | second and subsequent patches will be replies to the first one like in the | |
93 | illustration below where `[PATCH v2 0/3]` is in reply to `[PATCH 0/2]`: | |
94 | + | |
95 | [PATCH 0/2] Here is what I did... | |
96 | [PATCH 1/2] Clean up and tests | |
97 | [PATCH 2/2] Implementation | |
98 | [PATCH v2 0/3] Here is a reroll | |
99 | [PATCH v2 1/3] Clean up | |
100 | [PATCH v2 2/3] New tests | |
101 | [PATCH v2 3/3] Implementation | |
102 | + | |
103 | Only necessary if --compose is also set. If --compose | |
104 | is not set, this will be prompted for. | |
105 | ||
106 | --subject=<string>:: | |
107 | Specify the initial subject of the email thread. | |
108 | Only necessary if --compose is also set. If --compose | |
109 | is not set, this will be prompted for. | |
110 | ||
111 | --to=<address>:: | |
112 | Specify the primary recipient of the emails generated. Generally, this | |
113 | will be the upstream maintainer of the project involved. Default is the | |
114 | value of the 'sendemail.to' configuration value; if that is unspecified, | |
115 | and --to-cmd is not specified, this will be prompted for. | |
116 | + | |
117 | The --to option must be repeated for each user you want on the to list. | |
118 | ||
119 | --8bit-encoding=<encoding>:: | |
120 | When encountering a non-ASCII message or subject that does not | |
121 | declare its encoding, add headers/quoting to indicate it is | |
122 | encoded in <encoding>. Default is the value of the | |
123 | 'sendemail.assume8bitEncoding'; if that is unspecified, this | |
124 | will be prompted for if any non-ASCII files are encountered. | |
125 | + | |
126 | Note that no attempts whatsoever are made to validate the encoding. | |
127 | ||
128 | ||
129 | Sending | |
130 | ~~~~~~~ | |
131 | ||
132 | --envelope-sender=<address>:: | |
133 | Specify the envelope sender used to send the emails. | |
134 | This is useful if your default address is not the address that is | |
135 | subscribed to a list. In order to use the 'From' address, set the | |
136 | value to "auto". If you use the sendmail binary, you must have | |
137 | suitable privileges for the -f parameter. Default is the value of the | |
138 | 'sendemail.envelopesender' configuration variable; if that is | |
139 | unspecified, choosing the envelope sender is left to your MTA. | |
140 | ||
141 | --smtp-encryption=<encryption>:: | |
142 | Specify the encryption to use, either 'ssl' or 'tls'. Any other | |
143 | value reverts to plain SMTP. Default is the value of | |
144 | 'sendemail.smtpencryption'. | |
145 | ||
146 | --smtp-domain=<FQDN>:: | |
147 | Specifies the Fully Qualified Domain Name (FQDN) used in the | |
148 | HELO/EHLO command to the SMTP server. Some servers require the | |
149 | FQDN to match your IP address. If not set, git send-email attempts | |
150 | to determine your FQDN automatically. Default is the value of | |
151 | 'sendemail.smtpdomain'. | |
152 | ||
153 | --smtp-pass[=<password>]:: | |
154 | Password for SMTP-AUTH. The argument is optional: If no | |
155 | argument is specified, then the empty string is used as | |
156 | the password. Default is the value of 'sendemail.smtppass', | |
157 | however '--smtp-pass' always overrides this value. | |
158 | + | |
159 | Furthermore, passwords need not be specified in configuration files | |
160 | or on the command line. If a username has been specified (with | |
161 | '--smtp-user' or a 'sendemail.smtpuser'), but no password has been | |
162 | specified (with '--smtp-pass' or 'sendemail.smtppass'), then the | |
163 | user is prompted for a password while the input is masked for privacy. | |
164 | ||
165 | --smtp-server=<host>:: | |
166 | If set, specifies the outgoing SMTP server to use (e.g. | |
167 | `smtp.example.com` or a raw IP address). Alternatively it can | |
168 | specify a full pathname of a sendmail-like program instead; | |
169 | the program must support the `-i` option. Default value can | |
170 | be specified by the 'sendemail.smtpserver' configuration | |
171 | option; the built-in default is `/usr/sbin/sendmail` or | |
172 | `/usr/lib/sendmail` if such program is available, or | |
173 | `localhost` otherwise. | |
174 | ||
175 | --smtp-server-port=<port>:: | |
176 | Specifies a port different from the default port (SMTP | |
177 | servers typically listen to smtp port 25, but may also listen to | |
178 | submission port 587, or the common SSL smtp port 465); | |
179 | symbolic port names (e.g. "submission" instead of 587) | |
180 | are also accepted. The port can also be set with the | |
181 | 'sendemail.smtpserverport' configuration variable. | |
182 | ||
183 | --smtp-server-option=<option>:: | |
184 | If set, specifies the outgoing SMTP server option to use. | |
185 | Default value can be specified by the 'sendemail.smtpserveroption' | |
186 | configuration option. | |
187 | + | |
188 | The --smtp-server-option option must be repeated for each option you want | |
189 | to pass to the server. Likewise, different lines in the configuration files | |
190 | must be used for each option. | |
191 | ||
192 | --smtp-ssl:: | |
193 | Legacy alias for '--smtp-encryption ssl'. | |
194 | ||
195 | --smtp-user=<user>:: | |
196 | Username for SMTP-AUTH. Default is the value of 'sendemail.smtpuser'; | |
197 | if a username is not specified (with '--smtp-user' or 'sendemail.smtpuser'), | |
198 | then authentication is not attempted. | |
199 | ||
200 | ||
201 | Automating | |
202 | ~~~~~~~~~~ | |
203 | ||
204 | --to-cmd=<command>:: | |
205 | Specify a command to execute once per patch file which | |
206 | should generate patch file specific "To:" entries. | |
207 | Output of this command must be single email address per line. | |
208 | Default is the value of 'sendemail.tocmd' configuration value. | |
209 | ||
210 | --cc-cmd=<command>:: | |
211 | Specify a command to execute once per patch file which | |
212 | should generate patch file specific "Cc:" entries. | |
213 | Output of this command must be single email address per line. | |
214 | Default is the value of 'sendemail.cccmd' configuration value. | |
215 | ||
216 | --[no-]chain-reply-to:: | |
217 | If this is set, each email will be sent as a reply to the previous | |
218 | email sent. If disabled with "--no-chain-reply-to", all emails after | |
219 | the first will be sent as replies to the first email sent. When using | |
220 | this, it is recommended that the first file given be an overview of the | |
221 | entire patch series. Disabled by default, but the 'sendemail.chainreplyto' | |
222 | configuration variable can be used to enable it. | |
223 | ||
224 | --identity=<identity>:: | |
225 | A configuration identity. When given, causes values in the | |
226 | 'sendemail.<identity>' subsection to take precedence over | |
227 | values in the 'sendemail' section. The default identity is | |
228 | the value of 'sendemail.identity'. | |
229 | ||
230 | --[no-]signed-off-by-cc:: | |
231 | If this is set, add emails found in Signed-off-by: or Cc: lines to the | |
232 | cc list. Default is the value of 'sendemail.signedoffbycc' configuration | |
233 | value; if that is unspecified, default to --signed-off-by-cc. | |
234 | ||
235 | --suppress-cc=<category>:: | |
236 | Specify an additional category of recipients to suppress the | |
237 | auto-cc of: | |
238 | + | |
239 | -- | |
240 | - 'author' will avoid including the patch author | |
241 | - 'self' will avoid including the sender | |
242 | - 'cc' will avoid including anyone mentioned in Cc lines in the patch header | |
243 | except for self (use 'self' for that). | |
244 | - 'bodycc' will avoid including anyone mentioned in Cc lines in the | |
245 | patch body (commit message) except for self (use 'self' for that). | |
246 | - 'sob' will avoid including anyone mentioned in Signed-off-by lines except | |
247 | for self (use 'self' for that). | |
248 | - 'cccmd' will avoid running the --cc-cmd. | |
249 | - 'body' is equivalent to 'sob' + 'bodycc' | |
250 | - 'all' will suppress all auto cc values. | |
251 | -- | |
252 | + | |
253 | Default is the value of 'sendemail.suppresscc' configuration value; if | |
254 | that is unspecified, default to 'self' if --suppress-from is | |
255 | specified, as well as 'body' if --no-signed-off-cc is specified. | |
256 | ||
257 | --[no-]suppress-from:: | |
258 | If this is set, do not add the From: address to the cc: list. | |
259 | Default is the value of 'sendemail.suppressfrom' configuration | |
260 | value; if that is unspecified, default to --no-suppress-from. | |
261 | ||
262 | --[no-]thread:: | |
263 | If this is set, the In-Reply-To and References headers will be | |
264 | added to each email sent. Whether each mail refers to the | |
265 | previous email (`deep` threading per 'git format-patch' | |
266 | wording) or to the first email (`shallow` threading) is | |
267 | governed by "--[no-]chain-reply-to". | |
268 | + | |
269 | If disabled with "--no-thread", those headers will not be added | |
270 | (unless specified with --in-reply-to). Default is the value of the | |
271 | 'sendemail.thread' configuration value; if that is unspecified, | |
272 | default to --thread. | |
273 | + | |
274 | It is up to the user to ensure that no In-Reply-To header already | |
275 | exists when 'git send-email' is asked to add it (especially note that | |
276 | 'git format-patch' can be configured to do the threading itself). | |
277 | Failure to do so may not produce the expected result in the | |
278 | recipient's MUA. | |
279 | ||
280 | ||
281 | Administering | |
282 | ~~~~~~~~~~~~~ | |
283 | ||
284 | --confirm=<mode>:: | |
285 | Confirm just before sending: | |
286 | + | |
287 | -- | |
288 | - 'always' will always confirm before sending | |
289 | - 'never' will never confirm before sending | |
290 | - 'cc' will confirm before sending when send-email has automatically | |
291 | added addresses from the patch to the Cc list | |
292 | - 'compose' will confirm before sending the first message when using --compose. | |
293 | - 'auto' is equivalent to 'cc' + 'compose' | |
294 | -- | |
295 | + | |
296 | Default is the value of 'sendemail.confirm' configuration value; if that | |
297 | is unspecified, default to 'auto' unless any of the suppress options | |
298 | have been specified, in which case default to 'compose'. | |
299 | ||
300 | --dry-run:: | |
301 | Do everything except actually send the emails. | |
302 | ||
303 | --[no-]format-patch:: | |
304 | When an argument may be understood either as a reference or as a file name, | |
305 | choose to understand it as a format-patch argument ('--format-patch') | |
306 | or as a file name ('--no-format-patch'). By default, when such a conflict | |
307 | occurs, git send-email will fail. | |
308 | ||
309 | --quiet:: | |
310 | Make git-send-email less verbose. One line per email should be | |
311 | all that is output. | |
312 | ||
313 | --[no-]validate:: | |
314 | Perform sanity checks on patches. | |
315 | Currently, validation means the following: | |
316 | + | |
317 | -- | |
318 | * Warn of patches that contain lines longer than 998 characters; this | |
319 | is due to SMTP limits as described by http://www.ietf.org/rfc/rfc2821.txt. | |
320 | -- | |
321 | + | |
322 | Default is the value of 'sendemail.validate'; if this is not set, | |
323 | default to '--validate'. | |
324 | ||
325 | --force:: | |
326 | Send emails even if safety checks would prevent it. | |
327 | ||
328 | ||
329 | CONFIGURATION | |
330 | ------------- | |
331 | ||
332 | sendemail.aliasesfile:: | |
333 | To avoid typing long email addresses, point this to one or more | |
334 | email aliases files. You must also supply 'sendemail.aliasfiletype'. | |
335 | ||
336 | sendemail.aliasfiletype:: | |
337 | Format of the file(s) specified in sendemail.aliasesfile. Must be | |
338 | one of 'mutt', 'mailrc', 'pine', 'elm', or 'gnus'. | |
339 | ||
340 | sendemail.multiedit:: | |
341 | If true (default), a single editor instance will be spawned to edit | |
342 | files you have to edit (patches when '--annotate' is used, and the | |
343 | summary when '--compose' is used). If false, files will be edited one | |
344 | after the other, spawning a new editor each time. | |
345 | ||
346 | sendemail.confirm:: | |
347 | Sets the default for whether to confirm before sending. Must be | |
348 | one of 'always', 'never', 'cc', 'compose', or 'auto'. See '--confirm' | |
349 | in the previous section for the meaning of these values. | |
350 | ||
351 | ||
352 | Use gmail as the smtp server | |
353 | ---------------------------- | |
354 | ||
355 | Add the following section to the config file: | |
356 | ||
357 | [sendemail] | |
358 | smtpencryption = tls | |
359 | smtpserver = smtp.gmail.com | |
360 | smtpuser = yourname@gmail.com | |
361 | smtpserverport = 587 | |
362 | ||
363 | Note: the following perl modules are required | |
364 | Net::SMTP::SSL, MIME::Base64 and Authen::SASL | |
365 | ||
366 | ||
367 | Author | |
368 | ------ | |
369 | Written by Ryan Anderson <ryan@michonline.com> | |
370 | ||
371 | git-send-email is originally based upon | |
372 | send_lots_of_email.pl by Greg Kroah-Hartman. | |
373 | ||
374 | ||
375 | Documentation | |
376 | -------------- | |
377 | Documentation by Ryan Anderson | |
378 | ||
379 | ||
380 | GIT | |
381 | --- | |
382 | Part of the linkgit:git[1] suite |