##// END OF EJS Templates
patchbomb: extract 'getbundle' closure in its own function...
Pierre-Yves David -
r23211:6993282e default
parent child Browse files
Show More
@@ -168,6 +168,31 b' def _getpatches(repo, revs, **opts):'
168 cmdutil.export(repo, [r], fp=output,
168 cmdutil.export(repo, [r], fp=output,
169 opts=patch.diffopts(ui, opts))
169 opts=patch.diffopts(ui, opts))
170 yield output.getvalue().split('\n')
170 yield output.getvalue().split('\n')
171 def _getbundle(repo, dest, **opts):
172 """return a bundle containing changesets missing in "dest"
173
174 The `opts` keyword-arguments are the same as the one accepted by the
175 `bundle` command.
176
177 The bundle is a returned as a single in-memory binary blob.
178 """
179 ui = repo.ui
180 tmpdir = tempfile.mkdtemp(prefix='hg-email-bundle-')
181 tmpfn = os.path.join(tmpdir, 'bundle')
182 try:
183 commands.bundle(ui, repo, tmpfn, dest, **opts)
184 fp = open(tmpfn, 'rb')
185 data = fp.read()
186 fp.close()
187 return data
188 finally:
189 try:
190 os.unlink(tmpfn)
191 except OSError:
192 pass
193 os.rmdir(tmpdir)
194
195
171 emailopts = [
196 emailopts = [
172 ('', 'body', None, _('send patches as inline message text (default)')),
197 ('', 'body', None, _('send patches as inline message text (default)')),
173 ('a', 'attach', None, _('send patches as attachments')),
198 ('a', 'attach', None, _('send patches as attachments')),
@@ -307,22 +332,6 b' def patchbomb(ui, repo, *revs, **opts):'
307 return []
332 return []
308 return [str(r) for r in revs]
333 return [str(r) for r in revs]
309
334
310 def getbundle(dest):
311 tmpdir = tempfile.mkdtemp(prefix='hg-email-bundle-')
312 tmpfn = os.path.join(tmpdir, 'bundle')
313 try:
314 commands.bundle(ui, repo, tmpfn, dest, **opts)
315 fp = open(tmpfn, 'rb')
316 data = fp.read()
317 fp.close()
318 return data
319 finally:
320 try:
321 os.unlink(tmpfn)
322 except OSError:
323 pass
324 os.rmdir(tmpdir)
325
326 if not (opts.get('test') or mbox):
335 if not (opts.get('test') or mbox):
327 # really sending
336 # really sending
328 mail.validateconfig(ui)
337 mail.validateconfig(ui)
@@ -452,7 +461,7 b' def patchbomb(ui, repo, *revs, **opts):'
452 if patches:
461 if patches:
453 msgs = getpatchmsgs(patches, opts.get('patchnames'))
462 msgs = getpatchmsgs(patches, opts.get('patchnames'))
454 elif bundle:
463 elif bundle:
455 msgs = getbundlemsgs(getbundle(dest))
464 msgs = getbundlemsgs(_getbundle(repo, dest, **opts))
456 else:
465 else:
457 msgs = getpatchmsgs(list(_getpatches(repo, revs, **opts)))
466 msgs = getpatchmsgs(list(_getpatches(repo, revs, **opts)))
458
467
General Comments 0
You need to be logged in to leave comments. Login now