mercurial/commands.py
changeset 30517 a3ec6db36315
parent 30516 ef1353c283e3
child 30518 a8b17859684a
equal deleted inserted replaced
30516:ef1353c283e3 30517:a3ec6db36315
     9 
     9 
    10 import difflib
    10 import difflib
    11 import errno
    11 import errno
    12 import operator
    12 import operator
    13 import os
    13 import os
    14 import random
       
    15 import re
    14 import re
    16 import shlex
    15 import shlex
    17 import socket
    16 import socket
    18 import string
    17 import string
    19 import sys
    18 import sys
    34     bookmarks,
    33     bookmarks,
    35     bundle2,
    34     bundle2,
    36     changegroup,
    35     changegroup,
    37     cmdutil,
    36     cmdutil,
    38     copies,
    37     copies,
    39     dagutil,
       
    40     destutil,
    38     destutil,
    41     dirstateguard,
    39     dirstateguard,
    42     discovery,
    40     discovery,
    43     encoding,
    41     encoding,
    44     error,
    42     error,
    48     formatter,
    46     formatter,
    49     graphmod,
    47     graphmod,
    50     hbisect,
    48     hbisect,
    51     help,
    49     help,
    52     hg,
    50     hg,
    53     localrepo,
       
    54     lock as lockmod,
    51     lock as lockmod,
    55     merge as mergemod,
    52     merge as mergemod,
    56     minirst,
    53     minirst,
    57     obsolete,
    54     obsolete,
    58     patch,
    55     patch,
    63     repair,
    60     repair,
    64     revlog,
    61     revlog,
    65     revset,
    62     revset,
    66     scmutil,
    63     scmutil,
    67     server,
    64     server,
    68     setdiscovery,
       
    69     sshserver,
    65     sshserver,
    70     sslutil,
    66     sslutil,
    71     streamclone,
    67     streamclone,
    72     templatekw,
    68     templatekw,
    73     templater,
    69     templater,
    74     treediscovery,
       
    75     ui as uimod,
    70     ui as uimod,
    76     util,
    71     util,
    77 )
    72 )
    78 
    73 
    79 release = lockmod.release
    74 release = lockmod.release
  1863     Returns 0 on success, 1 if errors are encountered.
  1858     Returns 0 on success, 1 if errors are encountered.
  1864     """
  1859     """
  1865     with repo.wlock(False):
  1860     with repo.wlock(False):
  1866         return cmdutil.copy(ui, repo, pats, opts)
  1861         return cmdutil.copy(ui, repo, pats, opts)
  1867 
  1862 
  1868 @command('debugdiscovery',
       
  1869     [('', 'old', None, _('use old-style discovery')),
       
  1870     ('', 'nonheads', None,
       
  1871      _('use old-style discovery with non-heads included')),
       
  1872     ] + remoteopts,
       
  1873     _('[-l REV] [-r REV] [-b BRANCH]... [OTHER]'))
       
  1874 def debugdiscovery(ui, repo, remoteurl="default", **opts):
       
  1875     """runs the changeset discovery protocol in isolation"""
       
  1876     remoteurl, branches = hg.parseurl(ui.expandpath(remoteurl),
       
  1877                                       opts.get('branch'))
       
  1878     remote = hg.peer(repo, opts, remoteurl)
       
  1879     ui.status(_('comparing with %s\n') % util.hidepassword(remoteurl))
       
  1880 
       
  1881     # make sure tests are repeatable
       
  1882     random.seed(12323)
       
  1883 
       
  1884     def doit(localheads, remoteheads, remote=remote):
       
  1885         if opts.get('old'):
       
  1886             if localheads:
       
  1887                 raise error.Abort('cannot use localheads with old style '
       
  1888                                  'discovery')
       
  1889             if not util.safehasattr(remote, 'branches'):
       
  1890                 # enable in-client legacy support
       
  1891                 remote = localrepo.locallegacypeer(remote.local())
       
  1892             common, _in, hds = treediscovery.findcommonincoming(repo, remote,
       
  1893                                                                 force=True)
       
  1894             common = set(common)
       
  1895             if not opts.get('nonheads'):
       
  1896                 ui.write(("unpruned common: %s\n") %
       
  1897                          " ".join(sorted(short(n) for n in common)))
       
  1898                 dag = dagutil.revlogdag(repo.changelog)
       
  1899                 all = dag.ancestorset(dag.internalizeall(common))
       
  1900                 common = dag.externalizeall(dag.headsetofconnecteds(all))
       
  1901         else:
       
  1902             common, any, hds = setdiscovery.findcommonheads(ui, repo, remote)
       
  1903         common = set(common)
       
  1904         rheads = set(hds)
       
  1905         lheads = set(repo.heads())
       
  1906         ui.write(("common heads: %s\n") %
       
  1907                  " ".join(sorted(short(n) for n in common)))
       
  1908         if lheads <= common:
       
  1909             ui.write(("local is subset\n"))
       
  1910         elif rheads <= common:
       
  1911             ui.write(("remote is subset\n"))
       
  1912 
       
  1913     serverlogs = opts.get('serverlog')
       
  1914     if serverlogs:
       
  1915         for filename in serverlogs:
       
  1916             with open(filename, 'r') as logfile:
       
  1917                 line = logfile.readline()
       
  1918                 while line:
       
  1919                     parts = line.strip().split(';')
       
  1920                     op = parts[1]
       
  1921                     if op == 'cg':
       
  1922                         pass
       
  1923                     elif op == 'cgss':
       
  1924                         doit(parts[2].split(' '), parts[3].split(' '))
       
  1925                     elif op == 'unb':
       
  1926                         doit(parts[3].split(' '), parts[2].split(' '))
       
  1927                     line = logfile.readline()
       
  1928     else:
       
  1929         remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches,
       
  1930                                                  opts.get('remote_head'))
       
  1931         localrevs = opts.get('local_head')
       
  1932         doit(localrevs, remoterevs)
       
  1933 
       
  1934 @command('debugextensions', formatteropts, [], norepo=True)
  1863 @command('debugextensions', formatteropts, [], norepo=True)
  1935 def debugextensions(ui, **opts):
  1864 def debugextensions(ui, **opts):
  1936     '''show information about active extensions'''
  1865     '''show information about active extensions'''
  1937     exts = extensions.extensions(ui)
  1866     exts = extensions.extensions(ui)
  1938     hgver = util.version()
  1867     hgver = util.version()