Mercurial > hg > mercurial-crew-with-dirclash
annotate hgext/patchbomb.py @ 5483:0c43f87baba3 default tip
Fix file-changed-to-dir and dir-to-file commits (issue660).
Allow adding to dirstate files that clash with previously existing
but marked for removal. Protect from reintroducing clashes by revert.
This change doesn't address related issues with update. Current
workaround is to do "clean" update by manually removing conflicting
files/dirs from working directory.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sat, 27 Oct 2007 16:27:55 +0400 |
parents | 5223c360503e |
children |
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')) |
5480
5223c360503e
patchbomb: fix traceback when diffstat isn't available
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5472
diff
changeset
|
144 elif s is None: |
5223c360503e
patchbomb: fix traceback when diffstat isn't available
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5472
diff
changeset
|
145 ui.warn(_('No diffstat information available.\n')) |
5223c360503e
patchbomb: fix traceback when diffstat isn't available
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5472
diff
changeset
|
146 s = '' |
875 | 147 return s |
148 | |
876
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
149 def makepatch(patch, idx, total): |
875 | 150 desc = [] |
151 node = None | |
1135
e455d91f6259
Variable 'body' was missing in patchbomb script.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1118
diff
changeset
|
152 body = '' |
875 | 153 for line in patch: |
154 if line.startswith('#'): | |
155 if line.startswith('# Node ID'): node = line.split()[-1] | |
156 continue | |
3051
51b7f792e473
Detect git patches in patchbomb makepatch function
Brendan Cully <brendan@kublai.com>
parents:
3027
diff
changeset
|
157 if (line.startswith('diff -r') |
51b7f792e473
Detect git patches in patchbomb makepatch function
Brendan Cully <brendan@kublai.com>
parents:
3027
diff
changeset
|
158 or line.startswith('diff --git')): |
51b7f792e473
Detect git patches in patchbomb makepatch function
Brendan Cully <brendan@kublai.com>
parents:
3027
diff
changeset
|
159 break |
875 | 160 desc.append(line) |
161 if not node: raise ValueError | |
1118
63b5f68d8167
patchbomb: eliminate silly complete summary message
mpm@selenic.com
parents:
1032
diff
changeset
|
162 |
63b5f68d8167
patchbomb: eliminate silly complete summary message
mpm@selenic.com
parents:
1032
diff
changeset
|
163 #body = ('\n'.join(desc[1:]).strip() or |
63b5f68d8167
patchbomb: eliminate silly complete summary message
mpm@selenic.com
parents:
1032
diff
changeset
|
164 # 'Patch subject is complete summary.') |
63b5f68d8167
patchbomb: eliminate silly complete summary message
mpm@selenic.com
parents:
1032
diff
changeset
|
165 #body += '\n\n\n' |
63b5f68d8167
patchbomb: eliminate silly complete summary message
mpm@selenic.com
parents:
1032
diff
changeset
|
166 |
1604
da3f1121721b
add --plain option to patchbomb.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1603
diff
changeset
|
167 if opts['plain']: |
da3f1121721b
add --plain option to patchbomb.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1603
diff
changeset
|
168 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
|
169 if patch: patch.pop(0) |
da3f1121721b
add --plain option to patchbomb.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1603
diff
changeset
|
170 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
|
171 if opts['diffstat']: |
25430c523677
Polish patchbomb script.
Bryan O'Sullivan <bos@serpentine.com>
parents:
876
diff
changeset
|
172 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
|
173 if opts['attach']: |
4af7b178976a
patchbomb: optionally send patches as inline attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2705
diff
changeset
|
174 msg = email.MIMEMultipart.MIMEMultipart() |
4af7b178976a
patchbomb: optionally send patches as inline attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2705
diff
changeset
|
175 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
|
176 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
|
177 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
|
178 # 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
|
179 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
|
180 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
|
181 if patchname: |
084f07cacba0
patchbomb: add content-disposition to make display inline and add filename
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2706
diff
changeset
|
182 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
|
183 elif total > 1: |
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-%n.patch', |
2722
10e95059ffd7
patchbomb: fix generation of message-id when sending attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2707
diff
changeset
|
185 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
|
186 else: |
3247
1e2941fda520
patchbomb: update --attach to use cmdutil.make_filename
Brendan Cully <brendan@kublai.com>
parents:
3093
diff
changeset
|
187 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
|
188 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
|
189 msg.attach(p) |
2706
4af7b178976a
patchbomb: optionally send patches as inline attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2705
diff
changeset
|
190 else: |
4af7b178976a
patchbomb: optionally send patches as inline attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2705
diff
changeset
|
191 body += '\n'.join(patch) |
4af7b178976a
patchbomb: optionally send patches as inline attachments
Christian Ebert <blacktrash@gmx.net>
parents:
2705
diff
changeset
|
192 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
|
193 |
4142
ba3e13306f70
patchbomb: Strip more than one trailing dot (and spaces between them)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4141
diff
changeset
|
194 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
|
195 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
|
196 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
|
197 else: |
3291
0b5d626b354e
[patchbomb] prepend leading zeros in the "[PATCH N of M]" string
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3247
diff
changeset
|
198 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
|
199 subj = '[PATCH %0*d of %d] %s' % (tlen, idx, total, subj) |
875 | 200 msg['Subject'] = subj |
876
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
201 msg['X-Mercurial-Node'] = node |
875 | 202 return msg |
203 | |
4257
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
204 def outgoing(dest, revs): |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
205 '''Return the revisions present locally but not in dest''' |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
206 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
|
207 revs = [repo.lookup(rev) for rev in revs] |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
208 other = hg.repository(ui, dest) |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
209 ui.status(_('comparing with %s\n') % dest) |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
210 o = repo.findoutgoing(other) |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
211 if not o: |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
212 ui.status(_("no changes found\n")) |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
213 return [] |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
214 o = repo.changelog.nodesbetween(o, revs or None)[0] |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
215 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
|
216 |
4279
126d1967a3f8
Add common bundle/outgoing options to hg email
John Goerzen <jgoerzen@complete.org>
parents:
4278
diff
changeset
|
217 def getbundle(dest): |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
218 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
|
219 tmpfn = os.path.join(tmpdir, 'bundle') |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
220 try: |
4279
126d1967a3f8
Add common bundle/outgoing options to hg email
John Goerzen <jgoerzen@complete.org>
parents:
4278
diff
changeset
|
221 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
|
222 return open(tmpfn).read() |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
223 finally: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
224 try: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
225 os.unlink(tmpfn) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
226 except: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
227 pass |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
228 os.rmdir(tmpdir) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
229 |
5472
23889160905a
Catch smtp exceptions
Christian Ebert <blacktrash@gmx.net>
parents:
4886
diff
changeset
|
230 if not (opts['test'] or opts['mbox']): |
23889160905a
Catch smtp exceptions
Christian Ebert <blacktrash@gmx.net>
parents:
4886
diff
changeset
|
231 # really sending |
4483
a11e13d50645
patchbomb: Validate email config before we start prompting for info.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4480
diff
changeset
|
232 mail.validateconfig(ui) |
a11e13d50645
patchbomb: Validate email config before we start prompting for info.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4480
diff
changeset
|
233 |
4487
ead2fa544cbf
patchbomb: Fail early if no revs given to email
Bryan O'Sullivan <bos@serpentine.com>
parents:
4486
diff
changeset
|
234 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
|
235 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
|
236 |
4562
d48e1b5f8265
patchbomb: 0c61124ad877 moved setremoteconfig into cmdutil
Bryan O'Sullivan <bos@serpentine.com>
parents:
4487
diff
changeset
|
237 cmdutil.setremoteconfig(ui, opts) |
4486
c15955bde7dd
patchbomb: Fix typo.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4485
diff
changeset
|
238 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
|
239 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
|
240 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
241 if opts.get('outgoing') or opts.get('bundle'): |
4257
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
242 if len(revs) > 1: |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
243 raise util.Abort(_("too many destinations")) |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
244 dest = revs and revs[0] or None |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
245 revs = [] |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
246 |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
247 if opts.get('rev'): |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
248 if revs: |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
249 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
|
250 revs = opts.get('rev') |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
251 |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
252 if opts.get('outgoing'): |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
253 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
|
254 if opts.get('bundle'): |
126d1967a3f8
Add common bundle/outgoing options to hg email
John Goerzen <jgoerzen@complete.org>
parents:
4278
diff
changeset
|
255 opts['revs'] = revs |
4257
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
256 |
f51317e24114
Add --outgoing option to patchbomb
Brendan Cully <brendan@kublai.com>
parents:
4144
diff
changeset
|
257 # start |
4564
087b3ae4f08a
patchbomb: add --date option
Bryan O'Sullivan <bos@serpentine.com>
parents:
4563
diff
changeset
|
258 if opts.get('date'): |
087b3ae4f08a
patchbomb: add --date option
Bryan O'Sullivan <bos@serpentine.com>
parents:
4563
diff
changeset
|
259 start_time = util.parsedate(opts['date']) |
087b3ae4f08a
patchbomb: add --date option
Bryan O'Sullivan <bos@serpentine.com>
parents:
4563
diff
changeset
|
260 else: |
087b3ae4f08a
patchbomb: add --date option
Bryan O'Sullivan <bos@serpentine.com>
parents:
4563
diff
changeset
|
261 start_time = util.makedate() |
875 | 262 |
876
14cfaaec2e8e
Get patchbomb script to not use MIME attachments.
Bryan O'Sullivan <bos@serpentine.com>
parents:
875
diff
changeset
|
263 def genmsgid(id): |
4027
2601ac9c54f0
patchbomb: fix timezone offset in message date header
Christian Ebert <blacktrash@gmx.net>
parents:
3468
diff
changeset
|
264 return '<%s.%s@%s>' % (id[:20], int(start_time[0]), socket.getfqdn()) |
875 | 265 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
266 def getexportmsgs(): |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
267 patches = [] |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
268 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
269 class exportee: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
270 def __init__(self, container): |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
271 self.lines = [] |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
272 self.container = container |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
273 self.name = 'email' |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
274 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
275 def write(self, data): |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
276 self.lines.append(data) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
277 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
278 def close(self): |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
279 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
|
280 self.lines = [] |
875 | 281 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
282 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
|
283 'switch_parent': False, |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
284 'text': None, |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
285 'git': opts.get('git')}) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
286 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
287 jumbo = [] |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
288 msgs = [] |
875 | 289 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
290 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
|
291 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
292 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
|
293 jumbo.extend(p) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
294 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
|
295 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
296 if len(patches) > 1: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
297 tlen = len(str(len(patches))) |
875 | 298 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
299 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
|
300 tlen, 0, |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
301 len(patches), |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
302 opts['subject'] or |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
303 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
|
304 len(patches)))) |
875 | 305 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
306 body = '' |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
307 if opts['diffstat']: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
308 d = cdiffstat(_('Final summary:\n'), jumbo) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
309 if d: body = '\n' + d |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
310 |
4886
2f09df302f30
patchbomb: add --desc, to specify a file containing a series description
Bryan O'Sullivan <bos@serpentine.com>
parents:
4730
diff
changeset
|
311 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
|
312 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
|
313 else: |
2f09df302f30
patchbomb: add --desc, to specify a file containing a series description
Bryan O'Sullivan <bos@serpentine.com>
parents:
4730
diff
changeset
|
314 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
|
315 '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
|
316 body = ui.edit(body, sender) |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
317 |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
318 msg = email.MIMEText.MIMEText(body) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
319 msg['Subject'] = subj |
875 | 320 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
321 msgs.insert(0, msg) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
322 return msgs |
2704
99e7cf6bd2f7
make introductory message of patch series text/plain
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
323 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
324 def getbundlemsgs(bundle): |
4633
ff7253a0d1da
Cleanup of whitespace, indentation and line continuation.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4600
diff
changeset
|
325 subj = (opts['subject'] |
ff7253a0d1da
Cleanup of whitespace, indentation and line continuation.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4600
diff
changeset
|
326 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
|
327 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
|
328 body = ui.edit('', sender) |
875 | 329 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
330 msg = email.MIMEMultipart.MIMEMultipart() |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
331 if body: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
332 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
|
333 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
|
334 datapart.set_payload(bundle) |
4284
a04141f51056
Add a filename for the bundle
John Goerzen <jgoerzen@complete.org>
parents:
4283
diff
changeset
|
335 datapart.add_header('Content-Disposition', 'attachment', |
a04141f51056
Add a filename for the bundle
John Goerzen <jgoerzen@complete.org>
parents:
4283
diff
changeset
|
336 filename='bundle.hg') |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
337 email.Encoders.encode_base64(datapart) |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
338 msg.attach(datapart) |
2704
99e7cf6bd2f7
make introductory message of patch series text/plain
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
339 msg['Subject'] = subj |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
340 return [msg] |
875 | 341 |
2198
564034552f7f
rename [patchbomb] section to [email] section in hgrc. old name still ok.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2165
diff
changeset
|
342 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
|
343 ui.config('patchbomb', 'from') or |
877
25430c523677
Polish patchbomb script.
Bryan O'Sullivan <bos@serpentine.com>
parents:
876
diff
changeset
|
344 prompt('From', ui.username())) |
875 | 345 |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
346 if opts.get('bundle'): |
4279
126d1967a3f8
Add common bundle/outgoing options to hg email
John Goerzen <jgoerzen@complete.org>
parents:
4278
diff
changeset
|
347 msgs = getbundlemsgs(getbundle(dest)) |
4278
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
348 else: |
cfe886c14ddf
Add ability to send bundles to patchbomb extension
John Goerzen <jgoerzen@complete.org>
parents:
4257
diff
changeset
|
349 msgs = getexportmsgs() |
875 | 350 |
1154
c3cb9f39a91f
patchbomb: fix up confusion between strings and lists of strings.
bos@serpentine.internal.keyresearch.com
parents:
1136
diff
changeset
|
351 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
|
352 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
|
353 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
|
354 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
|
355 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
|
356 |
1154
c3cb9f39a91f
patchbomb: fix up confusion between strings and lists of strings.
bos@serpentine.internal.keyresearch.com
parents:
1136
diff
changeset
|
357 to = getaddrs('to', 'To') |
c3cb9f39a91f
patchbomb: fix up confusion between strings and lists of strings.
bos@serpentine.internal.keyresearch.com
parents:
1136
diff
changeset
|
358 cc = getaddrs('cc', 'Cc', '') |
875 | 359 |
2679
f1de91be1d87
optionally send blind carbon copies
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
360 bcc = opts['bcc'] or (ui.config('email', 'bcc') or |
f1de91be1d87
optionally send blind carbon copies
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
361 ui.config('patchbomb', 'bcc') or '').split(',') |
f1de91be1d87
optionally send blind carbon copies
Christian Ebert <blacktrash@gmx.net>
parents:
2443
diff
changeset
|
362 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
|
363 |
875 | 364 ui.write('\n') |
365 | |
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'] |
5472
23889160905a
Catch smtp exceptions
Christian Ebert <blacktrash@gmx.net>
parents:
4886
diff
changeset
|
414 mail.sendmail(ui, 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 } |