Mercurial > hg > mercurial-crew-with-dirclash
annotate hgext/patchbomb.py @ 5390:36c46e20976a
merge: provide *_ISLINK environment vars to merge helper
Sets HG_MY_ISLINK, HG_OTHER_ISLINK, HG_BASE_ISLINK in environment. Without these variables, it's impossible for the merge application to know whether the 'other' and 'base' files were symlinks in their original contexts. For the purposes of the merge they are always emitted as small text files.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Wed, 03 Oct 2007 23:09:36 +0200 |
parents | 2f09df302f30 |
children | 23889160905a |
rev | line source |
---|---|
1669
91d40fc959f0
turn patchbomb script into an extension module.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1604
diff
changeset
|
1 # Command for sending a collection of Mercurial changesets as a series |
91d40fc959f0
turn patchbomb script into an extension module.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1604
diff
changeset
|
2 # of patch emails. |
875 | 3 # |
4 # The series is started off with a "[PATCH 0 of N]" introduction, | |
5 # which describes the series as a whole. | |
6 # | |
7 # Each patch email has a Subject line of "[PATCH M of N] ...", using | |
8 # the first line of the changeset description as the subject text. | |
9 # The message contains two or three body parts: | |
10 # | |
11 # The remainder of the changeset description. | |
12 # | |
877
25430c523677
Polish patchbomb script.
Bryan O'Sullivan <bos@serpentine.com>
parents:
876
diff
changeset
|
13 # [Optional] If the diffstat program is installed, the result of |
25430c523677
Polish patchbomb script.
Bryan O'Sullivan <bos@serpentine.com>
parents:
876
diff
changeset
|
14 # running diffstat on the patch. |
875 | 15 # |
16 # The patch itself, as generated by "hg export". | |
17 # | |
18 # Each message refers to all of its predecessors using the In-Reply-To | |
19 # and References headers, so they will show up as a sequence in | |
20 # threaded mail and news readers, and in mail archives. | |
21 # | |
22 # For each changeset, you will be prompted with a diffstat summary and | |
23 # the changeset summary, so you can be sure you are sending the right | |
24 # changes. | |
25 # | |
2926
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
26 # To enable this extension: |
875 | 27 # |
2926
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
28 # [extensions] |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
29 # hgext.patchbomb = |
1702
e291d9a30bef
add --mbox output to patchbomb
Johannes Stezenbach <js@linuxtv.org>
parents:
1691
diff
changeset
|
30 # |
877
25430c523677
Polish patchbomb script.
Bryan O'Sullivan <bos@serpentine.com>
parents:
876
diff
changeset
|
31 # To configure other defaults, add a section like this to your hgrc |
25430c523677
Polish patchbomb script.
Bryan O'Sullivan <bos@serpentine.com>
parents:
876
diff
changeset
|
32 # file: |
25430c523677
Polish patchbomb script.
Bryan O'Sullivan <bos@serpentine.com>
parents:
876
diff
changeset
|
33 # |
2926
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
34 # [email] |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
35 # from = My Name <my@email> |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
36 # to = recipient1, recipient2, ... |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
37 # cc = cc1, cc2, ... |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
38 # bcc = bcc1, bcc2, ... |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
39 # |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
40 # Then you can use the "hg email" command to mail a series of changesets |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
41 # as a patchbomb. |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
42 # |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
43 # To avoid sending patches prematurely, it is a good idea to first run |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
44 # the "email" command with the "-n" option (test only). You will be |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
45 # prompted for an email recipient address, a subject an an introductory |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
46 # message describing the patches of your patchbomb. Then when all is |
4599
88fc92b0b821
patchbomb: page patchbomb messages only if PAGER is defined.
Patrick Mezard <pmezard@gmail.com>
parents:
4597
diff
changeset
|
47 # done, patchbomb messages are displayed. If PAGER environment variable |
88fc92b0b821
patchbomb: page patchbomb messages only if PAGER is defined.
Patrick Mezard <pmezard@gmail.com>
parents:
4597
diff
changeset
|
48 # is set, your pager will be fired up once for each patchbomb message, so |
2926
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
49 # you can verify everything is alright. |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
50 # |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
51 # The "-m" (mbox) option is also very useful. Instead of previewing |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
52 # each patchbomb message in a pager or sending the messages directly, |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
53 # it will create a UNIX mailbox file with the patch emails. This |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
54 # mailbox file can be previewed with any mail user agent which supports |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
55 # UNIX mbox files, i.e. with mutt: |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
56 # |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
57 # % mutt -R -f mbox |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
58 # |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
59 # When you are previewing the patchbomb messages, you can use `formail' |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
60 # (a utility that is commonly installed as part of the procmail package), |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
61 # to send each message out: |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
62 # |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
63 # % formail -s sendmail -bm -t < mbox |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
64 # |
13cd2cdeff6a
hgext: more patchbomb documentation
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
2909
diff
changeset
|
65 # That should be all. Now your patchbomb is on its way out. |
875 | 66 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
67 import os, errno, socket, tempfile |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
68 import email.MIMEMultipart, email.MIMEText, email.MIMEBase |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
69 import email.Utils, email.Encoders |
4029 | 70 from mercurial import cmdutil, commands, hg, mail, ui, patch, util |
3893 | 71 from mercurial.i18n import _ |
2707
084f07cacba0
patchbomb: add content-disposition to make display inline and add filename
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2706
diff
changeset
|
72 from mercurial.node import * |
875 | 73 |
74 def patchbomb(ui, repo, *revs, **opts): | |
4283
8625504f507c
Slight refining to help text in patchbomb.py
John Goerzen <jgoerzen@complete.org>
parents:
4280
diff
changeset
|
75 '''send changesets by email |
1204
b0f6053df539
patchbomb: continue if we can't import readline.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1154
diff
changeset
|
76 |
4283
8625504f507c
Slight refining to help text in patchbomb.py
John Goerzen <jgoerzen@complete.org>
parents:
4280
diff
changeset
|
77 By default, diffs are sent in the format generated by hg export, |
8625504f507c
Slight refining to help text in patchbomb.py
John Goerzen <jgoerzen@complete.org>
parents:
4280
diff
changeset
|
78 one per message. The series starts with a "[PATCH 0 of N]" |
8625504f507c
Slight refining to help text in patchbomb.py
John Goerzen <jgoerzen@complete.org>
parents:
4280
diff
changeset
|
79 introduction, which describes the series as a whole. |
1672
07f931af5f40
add documentation for email command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1670
diff
changeset
|
80 |
07f931af5f40
add documentation for email command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1670
diff
changeset
|
81 Each patch email has a Subject line of "[PATCH M of N] ...", using |
07f931af5f40
add documentation for email command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1670
diff
changeset
|
82 the first line of the changeset description as the subject text. |
07f931af5f40
add documentation for email command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1670
diff
changeset
|
83 The message contains two or three body parts. First, the rest of |
07f931af5f40
add documentation for email command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1670
diff
changeset
|
84 the changeset description. Next, (optionally) if the diffstat |
07f931af5f40
add documentation for email command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1670
diff
changeset
|
85 program is installed, the result of running diffstat on the patch. |
4257
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
86 Finally, the patch itself, as generated by "hg export". |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
87 |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
88 With --outgoing, emails will be generated for patches not |
4280
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
89 found in the destination repository (or only those which are |
4257
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
90 ancestors of the specified revisions if any are provided) |
4280
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
91 |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
92 With --bundle, changesets are selected as for --outgoing, |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
93 but a single email containing a binary Mercurial bundle as an |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
94 attachment will be sent. |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
95 |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
96 Examples: |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
97 |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
98 hg email -r 3000 # send patch 3000 only |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
99 hg email -r 3000 -r 3001 # send patches 3000 and 3001 |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
100 hg email -r 3000:3005 # send patches 3000 through 3005 |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
101 hg email 3000 # send patch 3000 (deprecated) |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
102 |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
103 hg email -o # send all patches not in default |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
104 hg email -o DEST # send all patches not in DEST |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
105 hg email -o -r 3000 # send all ancestors of 3000 not in default |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
106 hg email -o -r 3000 DEST # send all ancestors of 3000 not in DEST |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
107 |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
108 hg email -b # send bundle of all patches not in default |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
109 hg email -b DEST # send bundle of all patches not in DEST |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
110 hg email -b -r 3000 # bundle of all ancestors of 3000 not in default |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
111 hg email -b -r 3000 DEST # bundle of all ancestors of 3000 not in DEST |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
112 |
a9336520a4ee
Improve documentation for patchbomb and email
John Goerzen <jgoerzen@complete.org>
parents:
4279
diff
changeset
|
113 Before using this command, you will need to enable email in your hgrc. |
4283
8625504f507c
Slight refining to help text in patchbomb.py
John Goerzen <jgoerzen@complete.org>
parents:
4280
diff
changeset
|
114 See the [email] section in hgrc(5) for details. |
4257
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
115 ''' |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
116 |
875 | 117 def prompt(prompt, default = None, rest = ': ', empty_ok = False): |
4480
6b84c8d2f66f
patchbomb: Defer the import of readline.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4479
diff
changeset
|
118 try: |
6b84c8d2f66f
patchbomb: Defer the import of readline.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4479
diff
changeset
|
119 # readline gives raw_input editing capabilities, but is not |
6b84c8d2f66f
patchbomb: Defer the import of readline.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4479
diff
changeset
|
120 # present on windows |
6b84c8d2f66f
patchbomb: Defer the import of readline.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4479
diff
changeset
|
121 import readline |
6b84c8d2f66f
patchbomb: Defer the import of readline.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4479
diff
changeset
|
122 except ImportError: pass |
6b84c8d2f66f
patchbomb: Defer the import of readline.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4479
diff
changeset
|
123 |
876
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
124 if default: prompt += ' [%s]' % default |
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
125 prompt += rest |
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
126 while True: |
875 | 127 r = raw_input(prompt) |
876
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
128 if r: return r |
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
129 if default is not None: return default |
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
130 if empty_ok: return r |
1670
fe19c54ee403
add _ to several strings
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1669
diff
changeset
|
131 ui.warn(_('Please enter a valid value.\n')) |
875 | 132 |
133 def confirm(s): | |
134 if not prompt(s, default = 'y', rest = '? ').lower().startswith('y'): | |
135 raise ValueError | |
136 | |
3093
f422c8265ae5
Add support for diffstat in commit emails, and move diffstat from
Matt Doar <matt@xensource.com>
parents:
3051
diff
changeset
|
137 def cdiffstat(summary, patchlines): |
f422c8265ae5
Add support for diffstat in commit emails, and move diffstat from
Matt Doar <matt@xensource.com>
parents:
3051
diff
changeset
|
138 s = patch.diffstat(patchlines) |
875 | 139 if s: |
140 if summary: | |
141 ui.write(summary, '\n') | |
142 ui.write(s, '\n') | |
1670
fe19c54ee403
add _ to several strings
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1669
diff
changeset
|
143 confirm(_('Does the diffstat above look okay')) |
875 | 144 return s |
145 | |
876
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
146 def makepatch(patch, idx, total): |
875 | 147 desc = [] |
148 node = None | |
1135
e455d91f6259
Variable 'body' was missing in patchbomb script.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1118
diff
changeset
|
149 body = '' |
875 | 150 for line in patch: |
151 if line.startswith('#'): | |
152 if line.startswith('# Node ID'): node = line.split()[-1] | |
153 continue | |
3051
51b7f792e473
Detect git patches in patchbomb makepatch function
Brendan Cully <brendan@kublai.com>
parents:
3027
diff
changeset
|
154 if (line.startswith('diff -r') |
51b7f792e473
Detect git patches in patchbomb makepatch function
Brendan Cully <brendan@kublai.com>
parents:
3027
diff
changeset
|
155 or line.startswith('diff --git')): |
51b7f792e473
Detect git patches in patchbomb makepatch function
Brendan Cully <brendan@kublai.com>
parents:
3027
diff
changeset
|
156 break |
875 | 157 desc.append(line) |
158 if not node: raise ValueError | |
1118
63b5f68d8167
patchbomb: eliminate silly complete summary message
mpm@selenic.com
parents:
1032
diff
changeset
|
159 |
63b5f68d8167
patchbomb: eliminate silly complete summary message
mpm@selenic.com
parents:
1032
diff
changeset
|
160 #body = ('\n'.join(desc[1:]).strip() or |
63b5f68d8167
patchbomb: eliminate silly complete summary message
mpm@selenic.com
parents:
1032
diff
changeset
|
161 # 'Patch subject is complete summary.') |
63b5f68d8167
patchbomb: eliminate silly complete summary message
mpm@selenic.com
parents:
1032
diff
changeset
|
162 #body += '\n\n\n' |
63b5f68d8167
patchbomb: eliminate silly complete summary message
mpm@selenic.com
parents:
1032
diff
changeset
|
163 |
1604
da3f1121721b
add --plain option to patchbomb.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1603
diff
changeset
|
164 if opts['plain']: |
da3f1121721b
add --plain option to patchbomb.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1603
diff
changeset
|
165 while patch and patch[0].startswith('# '): patch.pop(0) |
da3f1121721b
add --plain option to patchbomb.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1603
diff
changeset
|
166 if patch: patch.pop(0) |
da3f1121721b
add --plain option to patchbomb.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1603
diff
changeset
|
167 while patch and not patch[0].strip(): patch.pop(0) |
877
25430c523677
Polish patchbomb script.
Bryan O'Sullivan <bos@serpentine.com>
parents:
876
diff
changeset
|
168 if opts['diffstat']: |
25430c523677
Polish patchbomb script.
Bryan O'Sullivan <bos@serpentine.com>
parents:
876
diff
changeset
|
169 body += cdiffstat('\n'.join(desc), patch) + '\n\n' |
2706
4af7b178976a
patchbomb: optionally send patches as inline attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2705
diff
changeset
|
170 if opts['attach']: |
4af7b178976a
patchbomb: optionally send patches as inline attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2705
diff
changeset
|
171 msg = email.MIMEMultipart.MIMEMultipart() |
4af7b178976a
patchbomb: optionally send patches as inline attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2705
diff
changeset
|
172 if body: msg.attach(email.MIMEText.MIMEText(body, 'plain')) |
2707
084f07cacba0
patchbomb: add content-disposition to make display inline and add filename
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2706
diff
changeset
|
173 p = email.MIMEText.MIMEText('\n'.join(patch), 'x-patch') |
2722
10e95059ffd7
patchbomb: fix generation of message-id when sending attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2707
diff
changeset
|
174 binnode = bin(node) |
2707
084f07cacba0
patchbomb: add content-disposition to make display inline and add filename
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2706
diff
changeset
|
175 # if node is mq patch, it will have patch file name as tag |
2722
10e95059ffd7
patchbomb: fix generation of message-id when sending attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2707
diff
changeset
|
176 patchname = [t for t in repo.nodetags(binnode) |
2707
084f07cacba0
patchbomb: add content-disposition to make display inline and add filename
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2706
diff
changeset
|
177 if t.endswith('.patch') or t.endswith('.diff')] |
084f07cacba0
patchbomb: add content-disposition to make display inline and add filename
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2706
diff
changeset
|
178 if patchname: |
084f07cacba0
patchbomb: add content-disposition to make display inline and add filename
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2706
diff
changeset
|
179 patchname = patchname[0] |
084f07cacba0
patchbomb: add content-disposition to make display inline and add filename
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2706
diff
changeset
|
180 elif total > 1: |
3247
1e2941fda520
patchbomb: update --attach to use cmdutil.make_filename
Brendan Cully <brendan@kublai.com>
parents:
3093
diff
changeset
|
181 patchname = cmdutil.make_filename(repo, '%b-%n.patch', |
2722
10e95059ffd7
patchbomb: fix generation of message-id when sending attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2707
diff
changeset
|
182 binnode, idx, total) |
2707
084f07cacba0
patchbomb: add content-disposition to make display inline and add filename
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2706
diff
changeset
|
183 else: |
3247
1e2941fda520
patchbomb: update --attach to use cmdutil.make_filename
Brendan Cully <brendan@kublai.com>
parents:
3093
diff
changeset
|
184 patchname = cmdutil.make_filename(repo, '%b.patch', binnode) |
2707
084f07cacba0
patchbomb: add content-disposition to make display inline and add filename
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2706
diff
changeset
|
185 p['Content-Disposition'] = 'inline; filename=' + patchname |
084f07cacba0
patchbomb: add content-disposition to make display inline and add filename
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2706
diff
changeset
|
186 msg.attach(p) |
2706
4af7b178976a
patchbomb: optionally send patches as inline attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2705
diff
changeset
|
187 else: |
4af7b178976a
patchbomb: optionally send patches as inline attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2705
diff
changeset
|
188 body += '\n'.join(patch) |
4af7b178976a
patchbomb: optionally send patches as inline attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2705
diff
changeset
|
189 msg = email.MIMEText.MIMEText(body) |
4141
49d7a035235b
patchbomb: Allow to specify subject of single-patch-series (issue475)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4027
diff
changeset
|
190 |
4142
ba3e13306f70
patchbomb: Strip more than one trailing dot (and spaces between them)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4141
diff
changeset
|
191 subj = desc[0].strip().rstrip('. ') |
1846
4d2791f4ef80
only put numbers on patches if > 1 patch.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1845
diff
changeset
|
192 if total == 1: |
4141
49d7a035235b
patchbomb: Allow to specify subject of single-patch-series (issue475)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4027
diff
changeset
|
193 subj = '[PATCH] ' + (opts['subject'] or subj) |
1846
4d2791f4ef80
only put numbers on patches if > 1 patch.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1845
diff
changeset
|
194 else: |
3291
0b5d626b354e
[patchbomb] prepend leading zeros in the "[PATCH N of M]" string
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3247
diff
changeset
|
195 tlen = len(str(total)) |
4141
49d7a035235b
patchbomb: Allow to specify subject of single-patch-series (issue475)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4027
diff
changeset
|
196 subj = '[PATCH %0*d of %d] %s' % (tlen, idx, total, subj) |
875 | 197 msg['Subject'] = subj |
876
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
198 msg['X-Mercurial-Node'] = node |
875 | 199 return msg |
200 | |
4257
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
201 def outgoing(dest, revs): |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
202 '''Return the revisions present locally but not in dest''' |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
203 dest = ui.expandpath(dest or 'default-push', dest or 'default') |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
204 revs = [repo.lookup(rev) for rev in revs] |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
205 other = hg.repository(ui, dest) |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
206 ui.status(_('comparing with %s\n') % dest) |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
207 o = repo.findoutgoing(other) |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
208 if not o: |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
209 ui.status(_("no changes found\n")) |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
210 return [] |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
211 o = repo.changelog.nodesbetween(o, revs or None)[0] |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
212 return [str(repo.changelog.rev(r)) for r in o] |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
213 |
4279
126d1967a3f8
Add common bundle/outgoing options to hg email
John Goerzen <jgoerzen@complete.org>
parents:
4278
diff
changeset
|
214 def getbundle(dest): |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
215 tmpdir = tempfile.mkdtemp(prefix='hg-email-bundle-') |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
216 tmpfn = os.path.join(tmpdir, 'bundle') |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
217 try: |
4279
126d1967a3f8
Add common bundle/outgoing options to hg email
John Goerzen <jgoerzen@complete.org>
parents:
4278
diff
changeset
|
218 commands.bundle(ui, repo, tmpfn, dest, **opts) |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
219 return open(tmpfn).read() |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
220 finally: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
221 try: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
222 os.unlink(tmpfn) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
223 except: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
224 pass |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
225 os.rmdir(tmpdir) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
226 |
4563
1cf908c00479
Don't validate email config if we're not sending email.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4562
diff
changeset
|
227 really_sending = not (opts['test'] or opts['mbox']) |
1cf908c00479
Don't validate email config if we're not sending email.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4562
diff
changeset
|
228 |
1cf908c00479
Don't validate email config if we're not sending email.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4562
diff
changeset
|
229 if really_sending: |
4483
a11e13d50645
patchbomb: Validate email config before we start prompting for info.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4480
diff
changeset
|
230 mail.validateconfig(ui) |
a11e13d50645
patchbomb: Validate email config before we start prompting for info.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4480
diff
changeset
|
231 |
4487
ead2fa544cbf
patchbomb: Fail early if no revs given to email
Bryan O'Sullivan <bos@serpentine.com>
parents:
4486
diff
changeset
|
232 if not (revs or opts.get('rev') or opts.get('outgoing')): |
ead2fa544cbf
patchbomb: Fail early if no revs given to email
Bryan O'Sullivan <bos@serpentine.com>
parents:
4486
diff
changeset
|
233 raise util.Abort(_('specify at least one changeset with -r or -o')) |
ead2fa544cbf
patchbomb: Fail early if no revs given to email
Bryan O'Sullivan <bos@serpentine.com>
parents:
4486
diff
changeset
|
234 |
4562
d48e1b5f8265
patchbomb: 0c61124ad877 moved setremoteconfig into cmdutil
Bryan O'Sullivan <bos@serpentine.com>
parents:
4487
diff
changeset
|
235 cmdutil.setremoteconfig(ui, opts) |
4486
c15955bde7dd
patchbomb: Fix typo.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4485
diff
changeset
|
236 if opts.get('outgoing') and opts.get('bundle'): |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
237 raise util.Abort(_("--outgoing mode always on with --bundle; do not re-specify --outgoing")) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
238 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
239 if opts.get('outgoing') or opts.get('bundle'): |
4257
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
240 if len(revs) > 1: |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
241 raise util.Abort(_("too many destinations")) |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
242 dest = revs and revs[0] or None |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
243 revs = [] |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
244 |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
245 if opts.get('rev'): |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
246 if revs: |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
247 raise util.Abort(_('use only one form to specify the revision')) |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
248 revs = opts.get('rev') |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
249 |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
250 if opts.get('outgoing'): |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
251 revs = outgoing(dest, opts.get('rev')) |
4279
126d1967a3f8
Add common bundle/outgoing options to hg email
John Goerzen <jgoerzen@complete.org>
parents:
4278
diff
changeset
|
252 if opts.get('bundle'): |
126d1967a3f8
Add common bundle/outgoing options to hg email
John Goerzen <jgoerzen@complete.org>
parents:
4278
diff
changeset
|
253 opts['revs'] = revs |
4257
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
254 |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
255 # start |
4564
087b3ae4f08a
patchbomb: add --date option
Bryan O'Sullivan <bos@serpentine.com>
parents:
4563
diff
changeset
|
256 if opts.get('date'): |
087b3ae4f08a
patchbomb: add --date option
Bryan O'Sullivan <bos@serpentine.com>
parents:
4563
diff
changeset
|
257 start_time = util.parsedate(opts['date']) |
087b3ae4f08a
patchbomb: add --date option
Bryan O'Sullivan <bos@serpentine.com>
parents:
4563
diff
changeset
|
258 else: |
087b3ae4f08a
patchbomb: add --date option
Bryan O'Sullivan <bos@serpentine.com>
parents:
4563
diff
changeset
|
259 start_time = util.makedate() |
875 | 260 |
876
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
261 def genmsgid(id): |
4027
2601ac9c54f0
patchbomb: fix timezone offset in message date header
Christian Ebert <blacktrash@gmx.net>
parents:
3468
diff
changeset
|
262 return '<%s.%s@%s>' % (id[:20], int(start_time[0]), socket.getfqdn()) |
875 | 263 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
264 def getexportmsgs(): |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
265 patches = [] |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
266 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
267 class exportee: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
268 def __init__(self, container): |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
269 self.lines = [] |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
270 self.container = container |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
271 self.name = 'email' |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
272 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
273 def write(self, data): |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
274 self.lines.append(data) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
275 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
276 def close(self): |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
277 self.container.append(''.join(self.lines).split('\n')) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
278 self.lines = [] |
875 | 279 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
280 commands.export(ui, repo, *revs, **{'output': exportee(patches), |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
281 'switch_parent': False, |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
282 'text': None, |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
283 'git': opts.get('git')}) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
284 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
285 jumbo = [] |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
286 msgs = [] |
875 | 287 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
288 ui.write(_('This patch series consists of %d patches.\n\n') % len(patches)) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
289 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
290 for p, i in zip(patches, xrange(len(patches))): |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
291 jumbo.extend(p) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
292 msgs.append(makepatch(p, i + 1, len(patches))) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
293 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
294 if len(patches) > 1: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
295 tlen = len(str(len(patches))) |
875 | 296 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
297 subj = '[PATCH %0*d of %d] %s' % ( |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
298 tlen, 0, |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
299 len(patches), |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
300 opts['subject'] or |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
301 prompt('Subject:', rest = ' [PATCH %0*d of %d] ' % (tlen, 0, |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
302 len(patches)))) |
875 | 303 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
304 body = '' |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
305 if opts['diffstat']: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
306 d = cdiffstat(_('Final summary:\n'), jumbo) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
307 if d: body = '\n' + d |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
308 |
4886
2f09df302f30
patchbomb: add --desc, to specify a file containing a series description
Bryan O'Sullivan <bos@serpentine.com>
parents:
4730
diff
changeset
|
309 if opts['desc']: |
2f09df302f30
patchbomb: add --desc, to specify a file containing a series description
Bryan O'Sullivan <bos@serpentine.com>
parents:
4730
diff
changeset
|
310 body = open(opts['desc']).read() |
2f09df302f30
patchbomb: add --desc, to specify a file containing a series description
Bryan O'Sullivan <bos@serpentine.com>
parents:
4730
diff
changeset
|
311 else: |
2f09df302f30
patchbomb: add --desc, to specify a file containing a series description
Bryan O'Sullivan <bos@serpentine.com>
parents:
4730
diff
changeset
|
312 ui.write(_('\nWrite the introductory message for the ' |
2f09df302f30
patchbomb: add --desc, to specify a file containing a series description
Bryan O'Sullivan <bos@serpentine.com>
parents:
4730
diff
changeset
|
313 'patch series.\n\n')) |
2f09df302f30
patchbomb: add --desc, to specify a file containing a series description
Bryan O'Sullivan <bos@serpentine.com>
parents:
4730
diff
changeset
|
314 body = ui.edit(body, sender) |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
315 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
316 msg = email.MIMEText.MIMEText(body) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
317 msg['Subject'] = subj |
875 | 318 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
319 msgs.insert(0, msg) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
320 return msgs |
2704
99e7cf6bd2f7
make introductory message of patch series text/plain
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
321 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
322 def getbundlemsgs(bundle): |
4633
ff7253a0d1da
Cleanup of whitespace, indentation and line continuation.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4600
diff
changeset
|
323 subj = (opts['subject'] |
ff7253a0d1da
Cleanup of whitespace, indentation and line continuation.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4600
diff
changeset
|
324 or prompt('Subject:', default='A bundle for your repository')) |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
325 ui.write(_('\nWrite the introductory message for the bundle.\n\n')) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
326 body = ui.edit('', sender) |
875 | 327 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
328 msg = email.MIMEMultipart.MIMEMultipart() |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
329 if body: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
330 msg.attach(email.MIMEText.MIMEText(body, 'plain')) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
331 datapart = email.MIMEBase.MIMEBase('application', 'x-mercurial-bundle') |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
332 datapart.set_payload(bundle) |
4284
a04141f51056
Add a filename for the bundle
John Goerzen <jgoerzen@complete.org>
parents:
4283
diff
changeset
|
333 datapart.add_header('Content-Disposition', 'attachment', |
a04141f51056
Add a filename for the bundle
John Goerzen <jgoerzen@complete.org>
parents:
4283
diff
changeset
|
334 filename='bundle.hg') |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
335 email.Encoders.encode_base64(datapart) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
336 msg.attach(datapart) |
2704
99e7cf6bd2f7
make introductory message of patch series text/plain
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
337 msg['Subject'] = subj |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
338 return [msg] |
875 | 339 |
2198
564034552f7f
rename [patchbomb] section to [email] section in hgrc. old name still ok.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2165
diff
changeset
|
340 sender = (opts['from'] or ui.config('email', 'from') or |
564034552f7f
rename [patchbomb] section to [email] section in hgrc. old name still ok.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2165
diff
changeset
|
341 ui.config('patchbomb', 'from') or |
877
25430c523677
Polish patchbomb script.
Bryan O'Sullivan <bos@serpentine.com>
parents:
876
diff
changeset
|
342 prompt('From', ui.username())) |
875 | 343 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
344 if opts.get('bundle'): |
4279
126d1967a3f8
Add common bundle/outgoing options to hg email
John Goerzen <jgoerzen@complete.org>
parents:
4278
diff
changeset
|
345 msgs = getbundlemsgs(getbundle(dest)) |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
346 else: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
347 msgs = getexportmsgs() |
875 | 348 |
1154
c3cb9f39a91f
patchbomb: fix up confusion between strings and lists of strings.
bos@serpentine.internal.keyresearch.com
parents:
1136
diff
changeset
|
349 def getaddrs(opt, prpt, default = None): |
2198
564034552f7f
rename [patchbomb] section to [email] section in hgrc. old name still ok.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2165
diff
changeset
|
350 addrs = opts[opt] or (ui.config('email', opt) or |
564034552f7f
rename [patchbomb] section to [email] section in hgrc. old name still ok.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2165
diff
changeset
|
351 ui.config('patchbomb', opt) or |
1154
c3cb9f39a91f
patchbomb: fix up confusion between strings and lists of strings.
bos@serpentine.internal.keyresearch.com
parents:
1136
diff
changeset
|
352 prompt(prpt, default = default)).split(',') |
c3cb9f39a91f
patchbomb: fix up confusion between strings and lists of strings.
bos@serpentine.internal.keyresearch.com
parents:
1136
diff
changeset
|
353 return [a.strip() for a in addrs if a.strip()] |
4479
82bc6aef8b43
patchbomb: Don't prompt for headers until sure we have revs to export.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4284
diff
changeset
|
354 |
1154
c3cb9f39a91f
patchbomb: fix up confusion between strings and lists of strings.
bos@serpentine.internal.keyresearch.com
parents:
1136
diff
changeset
|
355 to = getaddrs('to', 'To') |
c3cb9f39a91f
patchbomb: fix up confusion between strings and lists of strings.
bos@serpentine.internal.keyresearch.com
parents:
1136
diff
changeset
|
356 cc = getaddrs('cc', 'Cc', '') |
875 | 357 |
2679
f1de91be1d87
optionally send blind carbon copies
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
358 bcc = opts['bcc'] or (ui.config('email', 'bcc') or |
f1de91be1d87
optionally send blind carbon copies
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
359 ui.config('patchbomb', 'bcc') or '').split(',') |
f1de91be1d87
optionally send blind carbon copies
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
360 bcc = [a.strip() for a in bcc if a.strip()] |
f1de91be1d87
optionally send blind carbon copies
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
361 |
875 | 362 ui.write('\n') |
363 | |
4563
1cf908c00479
Don't validate email config if we're not sending email.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4562
diff
changeset
|
364 if really_sending: |
2909
20b95aef3fe0
Move ui.sendmail to mail.connect/sendmail
Matt Mackall <mpm@selenic.com>
parents:
2785
diff
changeset
|
365 mailer = mail.connect(ui) |
875 | 366 parent = None |
2443
bd9c39e8f38b
patchbomb does not handle email time stamp plattform independent
Volker Kleinfeld <Volker.Kleinfeld@gmx.de>
parents:
2292
diff
changeset
|
367 |
1827
26dd4ae77b7b
get patchbomb extension to use demandload. speeds up hg startup by 50%.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
1702
diff
changeset
|
368 sender_addr = email.Utils.parseaddr(sender)[1] |
875 | 369 for m in msgs: |
370 try: | |
876
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
371 m['Message-Id'] = genmsgid(m['X-Mercurial-Node']) |
875 | 372 except TypeError: |
876
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
373 m['Message-Id'] = genmsgid('patchbomb') |
875 | 374 if parent: |
375 m['In-Reply-To'] = parent | |
876
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
376 else: |
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
377 parent = m['Message-Id'] |
4027
2601ac9c54f0
patchbomb: fix timezone offset in message date header
Christian Ebert <blacktrash@gmx.net>
parents:
3468
diff
changeset
|
378 m['Date'] = util.datestr(date=start_time, |
2601ac9c54f0
patchbomb: fix timezone offset in message date header
Christian Ebert <blacktrash@gmx.net>
parents:
3468
diff
changeset
|
379 format="%a, %d %b %Y %H:%M:%S", timezone=True) |
2443
bd9c39e8f38b
patchbomb does not handle email time stamp plattform independent
Volker Kleinfeld <Volker.Kleinfeld@gmx.de>
parents:
2292
diff
changeset
|
380 |
4027
2601ac9c54f0
patchbomb: fix timezone offset in message date header
Christian Ebert <blacktrash@gmx.net>
parents:
3468
diff
changeset
|
381 start_time = (start_time[0] + 1, start_time[1]) |
875 | 382 m['From'] = sender |
383 m['To'] = ', '.join(to) | |
2679
f1de91be1d87
optionally send blind carbon copies
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
384 if cc: m['Cc'] = ', '.join(cc) |
f1de91be1d87
optionally send blind carbon copies
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
385 if bcc: m['Bcc'] = ', '.join(bcc) |
875 | 386 if opts['test']: |
1702
e291d9a30bef
add --mbox output to patchbomb
Johannes Stezenbach <js@linuxtv.org>
parents:
1691
diff
changeset
|
387 ui.status('Displaying ', m['Subject'], ' ...\n') |
4596
8e37342cb05d
patchbomb: flush ui before delegating to pager.
Patrick Mezard <pmezard@gmail.com>
parents:
4142
diff
changeset
|
388 ui.flush() |
4599
88fc92b0b821
patchbomb: page patchbomb messages only if PAGER is defined.
Patrick Mezard <pmezard@gmail.com>
parents:
4597
diff
changeset
|
389 if 'PAGER' in os.environ: |
4600
64c415d2553a
patchbomb: fix PAGER buglet introduced in 88fc92b0b821
Brendan Cully <brendan@kublai.com>
parents:
4599
diff
changeset
|
390 fp = os.popen(os.environ['PAGER'], 'w') |
4599
88fc92b0b821
patchbomb: page patchbomb messages only if PAGER is defined.
Patrick Mezard <pmezard@gmail.com>
parents:
4597
diff
changeset
|
391 else: |
88fc92b0b821
patchbomb: page patchbomb messages only if PAGER is defined.
Patrick Mezard <pmezard@gmail.com>
parents:
4597
diff
changeset
|
392 fp = ui |
1871
258e3a7955b8
patchbomb: ignore exception if pager quits.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1846
diff
changeset
|
393 try: |
258e3a7955b8
patchbomb: ignore exception if pager quits.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1846
diff
changeset
|
394 fp.write(m.as_string(0)) |
258e3a7955b8
patchbomb: ignore exception if pager quits.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1846
diff
changeset
|
395 fp.write('\n') |
258e3a7955b8
patchbomb: ignore exception if pager quits.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1846
diff
changeset
|
396 except IOError, inst: |
258e3a7955b8
patchbomb: ignore exception if pager quits.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1846
diff
changeset
|
397 if inst.errno != errno.EPIPE: |
258e3a7955b8
patchbomb: ignore exception if pager quits.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1846
diff
changeset
|
398 raise |
4599
88fc92b0b821
patchbomb: page patchbomb messages only if PAGER is defined.
Patrick Mezard <pmezard@gmail.com>
parents:
4597
diff
changeset
|
399 if fp is not ui: |
88fc92b0b821
patchbomb: page patchbomb messages only if PAGER is defined.
Patrick Mezard <pmezard@gmail.com>
parents:
4597
diff
changeset
|
400 fp.close() |
1702
e291d9a30bef
add --mbox output to patchbomb
Johannes Stezenbach <js@linuxtv.org>
parents:
1691
diff
changeset
|
401 elif opts['mbox']: |
e291d9a30bef
add --mbox output to patchbomb
Johannes Stezenbach <js@linuxtv.org>
parents:
1691
diff
changeset
|
402 ui.status('Writing ', m['Subject'], ' ...\n') |
e291d9a30bef
add --mbox output to patchbomb
Johannes Stezenbach <js@linuxtv.org>
parents:
1691
diff
changeset
|
403 fp = open(opts['mbox'], m.has_key('In-Reply-To') and 'ab+' or 'wb+') |
4027
2601ac9c54f0
patchbomb: fix timezone offset in message date header
Christian Ebert <blacktrash@gmx.net>
parents:
3468
diff
changeset
|
404 date = util.datestr(date=start_time, |
2601ac9c54f0
patchbomb: fix timezone offset in message date header
Christian Ebert <blacktrash@gmx.net>
parents:
3468
diff
changeset
|
405 format='%a %b %d %H:%M:%S %Y', timezone=False) |
1702
e291d9a30bef
add --mbox output to patchbomb
Johannes Stezenbach <js@linuxtv.org>
parents:
1691
diff
changeset
|
406 fp.write('From %s %s\n' % (sender_addr, date)) |
e291d9a30bef
add --mbox output to patchbomb
Johannes Stezenbach <js@linuxtv.org>
parents:
1691
diff
changeset
|
407 fp.write(m.as_string(0)) |
e291d9a30bef
add --mbox output to patchbomb
Johannes Stezenbach <js@linuxtv.org>
parents:
1691
diff
changeset
|
408 fp.write('\n\n') |
e291d9a30bef
add --mbox output to patchbomb
Johannes Stezenbach <js@linuxtv.org>
parents:
1691
diff
changeset
|
409 fp.close() |
875 | 410 else: |
1702
e291d9a30bef
add --mbox output to patchbomb
Johannes Stezenbach <js@linuxtv.org>
parents:
1691
diff
changeset
|
411 ui.status('Sending ', m['Subject'], ' ...\n') |
2785
58a679745b38
mailbomb: add a comment and remove the bcc in a more pythonic way
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2731
diff
changeset
|
412 # Exim does not remove the Bcc field |
58a679745b38
mailbomb: add a comment and remove the bcc in a more pythonic way
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2731
diff
changeset
|
413 del m['Bcc'] |
2909
20b95aef3fe0
Move ui.sendmail to mail.connect/sendmail
Matt Mackall <mpm@selenic.com>
parents:
2785
diff
changeset
|
414 mailer.sendmail(sender, to + bcc + cc, m.as_string(0)) |
875 | 415 |
1669
91d40fc959f0
turn patchbomb script into an extension module.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1604
diff
changeset
|
416 cmdtable = { |
4730
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
417 "email": |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
418 (patchbomb, |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
419 [('a', 'attach', None, _('send patches as inline attachments')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
420 ('', 'bcc', [], _('email addresses of blind copy recipients')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
421 ('c', 'cc', [], _('email addresses of copy recipients')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
422 ('d', 'diffstat', None, _('add diffstat output to messages')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
423 ('', 'date', '', _('use the given date as the sending date')), |
4886
2f09df302f30
patchbomb: add --desc, to specify a file containing a series description
Bryan O'Sullivan <bos@serpentine.com>
parents:
4730
diff
changeset
|
424 ('', 'desc', '', _('use the given file as the series description')), |
4730
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
425 ('g', 'git', None, _('use git extended diff format')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
426 ('f', 'from', '', _('email address of sender')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
427 ('', 'plain', None, _('omit hg patch header')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
428 ('n', 'test', None, _('print messages that would be sent')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
429 ('m', 'mbox', '', |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
430 _('write messages to mbox file instead of sending them')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
431 ('o', 'outgoing', None, |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
432 _('send changes not found in the target repository')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
433 ('b', 'bundle', None, |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
434 _('send changes not in target as a binary bundle')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
435 ('r', 'rev', [], _('a revision to send')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
436 ('s', 'subject', '', |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
437 _('subject of first message (intro or single patch)')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
438 ('t', 'to', [], _('email addresses of recipients')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
439 ('', 'force', None, |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
440 _('run even when remote repository is unrelated (with -b)')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
441 ('', 'base', [], |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
442 _('a base changeset to specify instead of a destination (with -b)')), |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
443 ] + commands.remoteopts, |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
444 _('hg email [OPTION]... [DEST]...')) |
eadfaa9ec487
Updated command tables in commands.py and hgext extensions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4633
diff
changeset
|
445 } |