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() |