Mercurial > hg
comparison hgext/graphlog.py @ 12730:33e1fd2aeb3c
incoming: unify code for incoming and graphlog.incoming
author | Nicolas Dumazet <nicdumz.commits@gmail.com> |
---|---|
date | Thu, 14 Oct 2010 21:36:00 +0200 |
parents | aa1faedeac5a |
children | 8888e56ac417 |
comparison
equal
deleted
inserted
replaced
12729:55f0648c7e2d | 12730:33e1fd2aeb3c |
---|---|
15 import os | 15 import os |
16 from mercurial.cmdutil import revrange, show_changeset | 16 from mercurial.cmdutil import revrange, show_changeset |
17 from mercurial.commands import templateopts | 17 from mercurial.commands import templateopts |
18 from mercurial.i18n import _ | 18 from mercurial.i18n import _ |
19 from mercurial.node import nullrev | 19 from mercurial.node import nullrev |
20 from mercurial import bundlerepo, changegroup, cmdutil, commands, extensions | 20 from mercurial import cmdutil, commands, extensions |
21 from mercurial import hg, url, util, graphmod, discovery | 21 from mercurial import hg, url, util, graphmod, discovery |
22 | 22 |
23 ASCIIDATA = 'ASC' | 23 ASCIIDATA = 'ASC' |
24 | 24 |
25 def asciiedges(seen, rev, parents): | 25 def asciiedges(seen, rev, parents): |
305 ASCII characters. | 305 ASCII characters. |
306 | 306 |
307 Nodes printed as an @ character are parents of the working | 307 Nodes printed as an @ character are parents of the working |
308 directory. | 308 directory. |
309 """ | 309 """ |
310 def subreporecurse(): | |
311 return 1 | |
310 | 312 |
311 check_unsupported_flags(opts) | 313 check_unsupported_flags(opts) |
312 source, branches = hg.parseurl(ui.expandpath(source), opts.get('branch')) | 314 def display(other, chlist, displayer): |
313 other = hg.repository(hg.remoteui(repo, opts), source) | |
314 revs, checkout = hg.addbranchrevs(repo, other, branches, opts.get('rev')) | |
315 ui.status(_('comparing with %s\n') % url.hidepassword(source)) | |
316 if revs: | |
317 revs = [other.lookup(rev) for rev in revs] | |
318 incoming = discovery.findincoming(repo, other, heads=revs, | |
319 force=opts["force"]) | |
320 if not incoming: | |
321 try: | |
322 os.unlink(opts["bundle"]) | |
323 except: | |
324 pass | |
325 ui.status(_("no changes found\n")) | |
326 return | |
327 | |
328 cleanup = None | |
329 try: | |
330 | |
331 fname = opts["bundle"] | |
332 if fname or not other.local(): | |
333 # create a bundle (uncompressed if other repo is not local) | |
334 if revs is None: | |
335 cg = other.changegroup(incoming, "incoming") | |
336 else: | |
337 cg = other.changegroupsubset(incoming, revs, 'incoming') | |
338 bundletype = other.local() and "HG10BZ" or "HG10UN" | |
339 fname = cleanup = changegroup.writebundle(cg, fname, bundletype) | |
340 # keep written bundle? | |
341 if opts["bundle"]: | |
342 cleanup = None | |
343 if not other.local(): | |
344 # use the created uncompressed bundlerepo | |
345 other = bundlerepo.bundlerepository(ui, repo.root, fname) | |
346 | |
347 chlist = other.changelog.nodesbetween(incoming, revs)[0] | |
348 revdag = graphrevs(other, chlist, opts) | 315 revdag = graphrevs(other, chlist, opts) |
349 displayer = show_changeset(ui, other, opts, buffered=True) | |
350 showparents = [ctx.node() for ctx in repo[None].parents()] | 316 showparents = [ctx.node() for ctx in repo[None].parents()] |
351 generate(ui, revdag, displayer, showparents, asciiedges) | 317 generate(ui, revdag, displayer, showparents, asciiedges) |
352 | 318 |
353 finally: | 319 hg._incoming(display, subreporecurse, ui, repo, source, opts, buffered=True) |
354 if hasattr(other, 'close'): | |
355 other.close() | |
356 if cleanup: | |
357 os.unlink(cleanup) | |
358 | 320 |
359 def uisetup(ui): | 321 def uisetup(ui): |
360 '''Initialize the extension.''' | 322 '''Initialize the extension.''' |
361 _wrapcmd(ui, 'log', commands.table, graphlog) | 323 _wrapcmd(ui, 'log', commands.table, graphlog) |
362 _wrapcmd(ui, 'incoming', commands.table, gincoming) | 324 _wrapcmd(ui, 'incoming', commands.table, gincoming) |