mercurial/debugcommands.py
changeset 35304 f77121b6bf1b
parent 35204 d4b108fdf423
child 35336 c3e4f196b6e0
equal deleted inserted replaced
35303:67b7e39b441b 35304:f77121b6bf1b
   732 
   732 
   733 @command('debugdiscovery',
   733 @command('debugdiscovery',
   734     [('', 'old', None, _('use old-style discovery')),
   734     [('', 'old', None, _('use old-style discovery')),
   735     ('', 'nonheads', None,
   735     ('', 'nonheads', None,
   736      _('use old-style discovery with non-heads included')),
   736      _('use old-style discovery with non-heads included')),
       
   737     ('', 'rev', [], 'restrict discovery to this set of revs'),
   737     ] + cmdutil.remoteopts,
   738     ] + cmdutil.remoteopts,
   738     _('[-l REV] [-r REV] [-b BRANCH]... [OTHER]'))
   739     _('[-l REV] [-r REV] [-b BRANCH]... [OTHER]'))
   739 def debugdiscovery(ui, repo, remoteurl="default", **opts):
   740 def debugdiscovery(ui, repo, remoteurl="default", **opts):
   740     """runs the changeset discovery protocol in isolation"""
   741     """runs the changeset discovery protocol in isolation"""
   741     opts = pycompat.byteskwargs(opts)
   742     opts = pycompat.byteskwargs(opts)
   745     ui.status(_('comparing with %s\n') % util.hidepassword(remoteurl))
   746     ui.status(_('comparing with %s\n') % util.hidepassword(remoteurl))
   746 
   747 
   747     # make sure tests are repeatable
   748     # make sure tests are repeatable
   748     random.seed(12323)
   749     random.seed(12323)
   749 
   750 
   750     def doit(localheads, remoteheads, remote=remote):
   751     def doit(pushedrevs, remoteheads, remote=remote):
   751         if opts.get('old'):
   752         if opts.get('old'):
   752             if localheads:
       
   753                 raise error.Abort('cannot use localheads with old style '
       
   754                                  'discovery')
       
   755             if not util.safehasattr(remote, 'branches'):
   753             if not util.safehasattr(remote, 'branches'):
   756                 # enable in-client legacy support
   754                 # enable in-client legacy support
   757                 remote = localrepo.locallegacypeer(remote.local())
   755                 remote = localrepo.locallegacypeer(remote.local())
   758             common, _in, hds = treediscovery.findcommonincoming(repo, remote,
   756             common, _in, hds = treediscovery.findcommonincoming(repo, remote,
   759                                                                 force=True)
   757                                                                 force=True)
   763                          " ".join(sorted(short(n) for n in common)))
   761                          " ".join(sorted(short(n) for n in common)))
   764                 dag = dagutil.revlogdag(repo.changelog)
   762                 dag = dagutil.revlogdag(repo.changelog)
   765                 all = dag.ancestorset(dag.internalizeall(common))
   763                 all = dag.ancestorset(dag.internalizeall(common))
   766                 common = dag.externalizeall(dag.headsetofconnecteds(all))
   764                 common = dag.externalizeall(dag.headsetofconnecteds(all))
   767         else:
   765         else:
   768             common, any, hds = setdiscovery.findcommonheads(ui, repo, remote)
   766             nodes = None
       
   767             if pushedrevs:
       
   768                 revs = scmutil.revrange(repo, pushedrevs)
       
   769                 nodes = [repo[r].node() for r in revs]
       
   770             common, any, hds = setdiscovery.findcommonheads(ui, repo, remote,
       
   771                                                             ancestorsof=nodes)
   769         common = set(common)
   772         common = set(common)
   770         rheads = set(hds)
   773         rheads = set(hds)
   771         lheads = set(repo.heads())
   774         lheads = set(repo.heads())
   772         ui.write(("common heads: %s\n") %
   775         ui.write(("common heads: %s\n") %
   773                  " ".join(sorted(short(n) for n in common)))
   776                  " ".join(sorted(short(n) for n in common)))
   792                         doit(parts[3].split(' '), parts[2].split(' '))
   795                         doit(parts[3].split(' '), parts[2].split(' '))
   793                     line = logfile.readline()
   796                     line = logfile.readline()
   794     else:
   797     else:
   795         remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches,
   798         remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches,
   796                                                  opts.get('remote_head'))
   799                                                  opts.get('remote_head'))
   797         localrevs = opts.get('local_head')
   800         localrevs = opts.get('rev')
   798         doit(localrevs, remoterevs)
   801         doit(localrevs, remoterevs)
   799 
   802 
   800 @command('debugextensions', cmdutil.formatteropts, [], norepo=True)
   803 @command('debugextensions', cmdutil.formatteropts, [], norepo=True)
   801 def debugextensions(ui, **opts):
   804 def debugextensions(ui, **opts):
   802     '''show information about active extensions'''
   805     '''show information about active extensions'''