comparison mercurial/commands.py @ 30517:a3ec6db36315

debugcommands: move 'debugdiscovery' in the module And a lot of imports with it.
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 17 Aug 2016 20:56:11 -0700
parents ef1353c283e3
children a8b17859684a
comparison
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()