77 except ImportError: pass |
77 except ImportError: pass |
78 |
78 |
79 def patchbomb(ui, repo, *revs, **opts): |
79 def patchbomb(ui, repo, *revs, **opts): |
80 '''send changesets as a series of patch emails |
80 '''send changesets as a series of patch emails |
81 |
81 |
82 The series starts with a "[PATCH 0 of N]" introduction, which |
82 By default, the series starts with a "[PATCH 0 of N]" introduction, which |
83 describes the series as a whole. |
83 describes the series as a whole. |
84 |
84 |
85 Each patch email has a Subject line of "[PATCH M of N] ...", using |
85 Each patch email has a Subject line of "[PATCH M of N] ...", using |
86 the first line of the changeset description as the subject text. |
86 the first line of the changeset description as the subject text. |
87 The message contains two or three body parts. First, the rest of |
87 The message contains two or three body parts. First, the rest of |
88 the changeset description. Next, (optionally) if the diffstat |
88 the changeset description. Next, (optionally) if the diffstat |
89 program is installed, the result of running diffstat on the patch. |
89 program is installed, the result of running diffstat on the patch. |
90 Finally, the patch itself, as generated by "hg export". |
90 Finally, the patch itself, as generated by "hg export". |
91 |
91 |
92 With --outgoing, emails will be generated for patches not |
92 With --outgoing, emails will be generated for patches not |
93 found in the target repository (or only those which are |
93 found in the destination repository (or only those which are |
94 ancestors of the specified revisions if any are provided) |
94 ancestors of the specified revisions if any are provided) |
|
95 |
|
96 With --bundle, changesets are selected as for --outgoing, |
|
97 but a single email containing a binary Mercurial bundle as an |
|
98 attachment will be sent. |
|
99 |
|
100 Examples: |
|
101 |
|
102 hg email -r 3000 # send patch 3000 only |
|
103 hg email -r 3000 -r 3001 # send patches 3000 and 3001 |
|
104 hg email -r 3000:3005 # send patches 3000 through 3005 |
|
105 hg email 3000 # send patch 3000 (deprecated) |
|
106 |
|
107 hg email -o # send all patches not in default |
|
108 hg email -o DEST # send all patches not in DEST |
|
109 hg email -o -r 3000 # send all ancestors of 3000 not in default |
|
110 hg email -o -r 3000 DEST # send all ancestors of 3000 not in DEST |
|
111 |
|
112 hg email -b # send bundle of all patches not in default |
|
113 hg email -b DEST # send bundle of all patches not in DEST |
|
114 hg email -b -r 3000 # bundle of all ancestors of 3000 not in default |
|
115 hg email -b -r 3000 DEST # bundle of all ancestors of 3000 not in DEST |
|
116 |
|
117 Before using this command, you will need to enable email in your hgrc. |
|
118 See hgrc(5) for details. |
95 ''' |
119 ''' |
96 |
120 |
97 def prompt(prompt, default = None, rest = ': ', empty_ok = False): |
121 def prompt(prompt, default = None, rest = ': ', empty_ok = False): |
98 if default: prompt += ' [%s]' % default |
122 if default: prompt += ' [%s]' % default |
99 prompt += rest |
123 prompt += rest |