Show More
@@ -11,7 +11,6 import difflib | |||||
11 | import errno |
|
11 | import errno | |
12 | import os |
|
12 | import os | |
13 | import re |
|
13 | import re | |
14 | import string |
|
|||
15 | import time |
|
14 | import time | |
16 |
|
15 | |||
17 | from .i18n import _ |
|
16 | from .i18n import _ | |
@@ -47,7 +46,6 from . import ( | |||||
47 | patch, |
|
46 | patch, | |
48 | phases, |
|
47 | phases, | |
49 | pycompat, |
|
48 | pycompat, | |
50 | revlog, |
|
|||
51 | revset, |
|
49 | revset, | |
52 | scmutil, |
|
50 | scmutil, | |
53 | server, |
|
51 | server, | |
@@ -1858,226 +1856,6 def copy(ui, repo, *pats, **opts): | |||||
1858 | with repo.wlock(False): |
|
1856 | with repo.wlock(False): | |
1859 | return cmdutil.copy(ui, repo, pats, opts) |
|
1857 | return cmdutil.copy(ui, repo, pats, opts) | |
1860 |
|
1858 | |||
1861 | @command('debugrevlog', debugrevlogopts + |
|
|||
1862 | [('d', 'dump', False, _('dump index data'))], |
|
|||
1863 | _('-c|-m|FILE'), |
|
|||
1864 | optionalrepo=True) |
|
|||
1865 | def debugrevlog(ui, repo, file_=None, **opts): |
|
|||
1866 | """show data and statistics about a revlog""" |
|
|||
1867 | r = cmdutil.openrevlog(repo, 'debugrevlog', file_, opts) |
|
|||
1868 |
|
||||
1869 | if opts.get("dump"): |
|
|||
1870 | numrevs = len(r) |
|
|||
1871 | ui.write(("# rev p1rev p2rev start end deltastart base p1 p2" |
|
|||
1872 | " rawsize totalsize compression heads chainlen\n")) |
|
|||
1873 | ts = 0 |
|
|||
1874 | heads = set() |
|
|||
1875 |
|
||||
1876 | for rev in xrange(numrevs): |
|
|||
1877 | dbase = r.deltaparent(rev) |
|
|||
1878 | if dbase == -1: |
|
|||
1879 | dbase = rev |
|
|||
1880 | cbase = r.chainbase(rev) |
|
|||
1881 | clen = r.chainlen(rev) |
|
|||
1882 | p1, p2 = r.parentrevs(rev) |
|
|||
1883 | rs = r.rawsize(rev) |
|
|||
1884 | ts = ts + rs |
|
|||
1885 | heads -= set(r.parentrevs(rev)) |
|
|||
1886 | heads.add(rev) |
|
|||
1887 | try: |
|
|||
1888 | compression = ts / r.end(rev) |
|
|||
1889 | except ZeroDivisionError: |
|
|||
1890 | compression = 0 |
|
|||
1891 | ui.write("%5d %5d %5d %5d %5d %10d %4d %4d %4d %7d %9d " |
|
|||
1892 | "%11d %5d %8d\n" % |
|
|||
1893 | (rev, p1, p2, r.start(rev), r.end(rev), |
|
|||
1894 | r.start(dbase), r.start(cbase), |
|
|||
1895 | r.start(p1), r.start(p2), |
|
|||
1896 | rs, ts, compression, len(heads), clen)) |
|
|||
1897 | return 0 |
|
|||
1898 |
|
||||
1899 | v = r.version |
|
|||
1900 | format = v & 0xFFFF |
|
|||
1901 | flags = [] |
|
|||
1902 | gdelta = False |
|
|||
1903 | if v & revlog.REVLOGNGINLINEDATA: |
|
|||
1904 | flags.append('inline') |
|
|||
1905 | if v & revlog.REVLOGGENERALDELTA: |
|
|||
1906 | gdelta = True |
|
|||
1907 | flags.append('generaldelta') |
|
|||
1908 | if not flags: |
|
|||
1909 | flags = ['(none)'] |
|
|||
1910 |
|
||||
1911 | nummerges = 0 |
|
|||
1912 | numfull = 0 |
|
|||
1913 | numprev = 0 |
|
|||
1914 | nump1 = 0 |
|
|||
1915 | nump2 = 0 |
|
|||
1916 | numother = 0 |
|
|||
1917 | nump1prev = 0 |
|
|||
1918 | nump2prev = 0 |
|
|||
1919 | chainlengths = [] |
|
|||
1920 |
|
||||
1921 | datasize = [None, 0, 0] |
|
|||
1922 | fullsize = [None, 0, 0] |
|
|||
1923 | deltasize = [None, 0, 0] |
|
|||
1924 | chunktypecounts = {} |
|
|||
1925 | chunktypesizes = {} |
|
|||
1926 |
|
||||
1927 | def addsize(size, l): |
|
|||
1928 | if l[0] is None or size < l[0]: |
|
|||
1929 | l[0] = size |
|
|||
1930 | if size > l[1]: |
|
|||
1931 | l[1] = size |
|
|||
1932 | l[2] += size |
|
|||
1933 |
|
||||
1934 | numrevs = len(r) |
|
|||
1935 | for rev in xrange(numrevs): |
|
|||
1936 | p1, p2 = r.parentrevs(rev) |
|
|||
1937 | delta = r.deltaparent(rev) |
|
|||
1938 | if format > 0: |
|
|||
1939 | addsize(r.rawsize(rev), datasize) |
|
|||
1940 | if p2 != nullrev: |
|
|||
1941 | nummerges += 1 |
|
|||
1942 | size = r.length(rev) |
|
|||
1943 | if delta == nullrev: |
|
|||
1944 | chainlengths.append(0) |
|
|||
1945 | numfull += 1 |
|
|||
1946 | addsize(size, fullsize) |
|
|||
1947 | else: |
|
|||
1948 | chainlengths.append(chainlengths[delta] + 1) |
|
|||
1949 | addsize(size, deltasize) |
|
|||
1950 | if delta == rev - 1: |
|
|||
1951 | numprev += 1 |
|
|||
1952 | if delta == p1: |
|
|||
1953 | nump1prev += 1 |
|
|||
1954 | elif delta == p2: |
|
|||
1955 | nump2prev += 1 |
|
|||
1956 | elif delta == p1: |
|
|||
1957 | nump1 += 1 |
|
|||
1958 | elif delta == p2: |
|
|||
1959 | nump2 += 1 |
|
|||
1960 | elif delta != nullrev: |
|
|||
1961 | numother += 1 |
|
|||
1962 |
|
||||
1963 | # Obtain data on the raw chunks in the revlog. |
|
|||
1964 | chunk = r._chunkraw(rev, rev)[1] |
|
|||
1965 | if chunk: |
|
|||
1966 | chunktype = chunk[0] |
|
|||
1967 | else: |
|
|||
1968 | chunktype = 'empty' |
|
|||
1969 |
|
||||
1970 | if chunktype not in chunktypecounts: |
|
|||
1971 | chunktypecounts[chunktype] = 0 |
|
|||
1972 | chunktypesizes[chunktype] = 0 |
|
|||
1973 |
|
||||
1974 | chunktypecounts[chunktype] += 1 |
|
|||
1975 | chunktypesizes[chunktype] += size |
|
|||
1976 |
|
||||
1977 | # Adjust size min value for empty cases |
|
|||
1978 | for size in (datasize, fullsize, deltasize): |
|
|||
1979 | if size[0] is None: |
|
|||
1980 | size[0] = 0 |
|
|||
1981 |
|
||||
1982 | numdeltas = numrevs - numfull |
|
|||
1983 | numoprev = numprev - nump1prev - nump2prev |
|
|||
1984 | totalrawsize = datasize[2] |
|
|||
1985 | datasize[2] /= numrevs |
|
|||
1986 | fulltotal = fullsize[2] |
|
|||
1987 | fullsize[2] /= numfull |
|
|||
1988 | deltatotal = deltasize[2] |
|
|||
1989 | if numrevs - numfull > 0: |
|
|||
1990 | deltasize[2] /= numrevs - numfull |
|
|||
1991 | totalsize = fulltotal + deltatotal |
|
|||
1992 | avgchainlen = sum(chainlengths) / numrevs |
|
|||
1993 | maxchainlen = max(chainlengths) |
|
|||
1994 | compratio = 1 |
|
|||
1995 | if totalsize: |
|
|||
1996 | compratio = totalrawsize / totalsize |
|
|||
1997 |
|
||||
1998 | basedfmtstr = '%%%dd\n' |
|
|||
1999 | basepcfmtstr = '%%%dd %s(%%5.2f%%%%)\n' |
|
|||
2000 |
|
||||
2001 | def dfmtstr(max): |
|
|||
2002 | return basedfmtstr % len(str(max)) |
|
|||
2003 | def pcfmtstr(max, padding=0): |
|
|||
2004 | return basepcfmtstr % (len(str(max)), ' ' * padding) |
|
|||
2005 |
|
||||
2006 | def pcfmt(value, total): |
|
|||
2007 | if total: |
|
|||
2008 | return (value, 100 * float(value) / total) |
|
|||
2009 | else: |
|
|||
2010 | return value, 100.0 |
|
|||
2011 |
|
||||
2012 | ui.write(('format : %d\n') % format) |
|
|||
2013 | ui.write(('flags : %s\n') % ', '.join(flags)) |
|
|||
2014 |
|
||||
2015 | ui.write('\n') |
|
|||
2016 | fmt = pcfmtstr(totalsize) |
|
|||
2017 | fmt2 = dfmtstr(totalsize) |
|
|||
2018 | ui.write(('revisions : ') + fmt2 % numrevs) |
|
|||
2019 | ui.write((' merges : ') + fmt % pcfmt(nummerges, numrevs)) |
|
|||
2020 | ui.write((' normal : ') + fmt % pcfmt(numrevs - nummerges, numrevs)) |
|
|||
2021 | ui.write(('revisions : ') + fmt2 % numrevs) |
|
|||
2022 | ui.write((' full : ') + fmt % pcfmt(numfull, numrevs)) |
|
|||
2023 | ui.write((' deltas : ') + fmt % pcfmt(numdeltas, numrevs)) |
|
|||
2024 | ui.write(('revision size : ') + fmt2 % totalsize) |
|
|||
2025 | ui.write((' full : ') + fmt % pcfmt(fulltotal, totalsize)) |
|
|||
2026 | ui.write((' deltas : ') + fmt % pcfmt(deltatotal, totalsize)) |
|
|||
2027 |
|
||||
2028 | def fmtchunktype(chunktype): |
|
|||
2029 | if chunktype == 'empty': |
|
|||
2030 | return ' %s : ' % chunktype |
|
|||
2031 | elif chunktype in string.ascii_letters: |
|
|||
2032 | return ' 0x%s (%s) : ' % (hex(chunktype), chunktype) |
|
|||
2033 | else: |
|
|||
2034 | return ' 0x%s : ' % hex(chunktype) |
|
|||
2035 |
|
||||
2036 | ui.write('\n') |
|
|||
2037 | ui.write(('chunks : ') + fmt2 % numrevs) |
|
|||
2038 | for chunktype in sorted(chunktypecounts): |
|
|||
2039 | ui.write(fmtchunktype(chunktype)) |
|
|||
2040 | ui.write(fmt % pcfmt(chunktypecounts[chunktype], numrevs)) |
|
|||
2041 | ui.write(('chunks size : ') + fmt2 % totalsize) |
|
|||
2042 | for chunktype in sorted(chunktypecounts): |
|
|||
2043 | ui.write(fmtchunktype(chunktype)) |
|
|||
2044 | ui.write(fmt % pcfmt(chunktypesizes[chunktype], totalsize)) |
|
|||
2045 |
|
||||
2046 | ui.write('\n') |
|
|||
2047 | fmt = dfmtstr(max(avgchainlen, compratio)) |
|
|||
2048 | ui.write(('avg chain length : ') + fmt % avgchainlen) |
|
|||
2049 | ui.write(('max chain length : ') + fmt % maxchainlen) |
|
|||
2050 | ui.write(('compression ratio : ') + fmt % compratio) |
|
|||
2051 |
|
||||
2052 | if format > 0: |
|
|||
2053 | ui.write('\n') |
|
|||
2054 | ui.write(('uncompressed data size (min/max/avg) : %d / %d / %d\n') |
|
|||
2055 | % tuple(datasize)) |
|
|||
2056 | ui.write(('full revision size (min/max/avg) : %d / %d / %d\n') |
|
|||
2057 | % tuple(fullsize)) |
|
|||
2058 | ui.write(('delta size (min/max/avg) : %d / %d / %d\n') |
|
|||
2059 | % tuple(deltasize)) |
|
|||
2060 |
|
||||
2061 | if numdeltas > 0: |
|
|||
2062 | ui.write('\n') |
|
|||
2063 | fmt = pcfmtstr(numdeltas) |
|
|||
2064 | fmt2 = pcfmtstr(numdeltas, 4) |
|
|||
2065 | ui.write(('deltas against prev : ') + fmt % pcfmt(numprev, numdeltas)) |
|
|||
2066 | if numprev > 0: |
|
|||
2067 | ui.write((' where prev = p1 : ') + fmt2 % pcfmt(nump1prev, |
|
|||
2068 | numprev)) |
|
|||
2069 | ui.write((' where prev = p2 : ') + fmt2 % pcfmt(nump2prev, |
|
|||
2070 | numprev)) |
|
|||
2071 | ui.write((' other : ') + fmt2 % pcfmt(numoprev, |
|
|||
2072 | numprev)) |
|
|||
2073 | if gdelta: |
|
|||
2074 | ui.write(('deltas against p1 : ') |
|
|||
2075 | + fmt % pcfmt(nump1, numdeltas)) |
|
|||
2076 | ui.write(('deltas against p2 : ') |
|
|||
2077 | + fmt % pcfmt(nump2, numdeltas)) |
|
|||
2078 | ui.write(('deltas against other : ') + fmt % pcfmt(numother, |
|
|||
2079 | numdeltas)) |
|
|||
2080 |
|
||||
2081 | @command('debugrevspec', |
|
1859 | @command('debugrevspec', | |
2082 | [('', 'optimize', None, |
|
1860 | [('', 'optimize', None, | |
2083 | _('print parsed tree after optimizing (DEPRECATED)')), |
|
1861 | _('print parsed tree after optimizing (DEPRECATED)')), |
@@ -12,6 +12,7 import operator | |||||
12 | import os |
|
12 | import os | |
13 | import random |
|
13 | import random | |
14 | import socket |
|
14 | import socket | |
|
15 | import string | |||
15 | import sys |
|
16 | import sys | |
16 | import tempfile |
|
17 | import tempfile | |
17 | import time |
|
18 | import time | |
@@ -22,6 +23,7 from .node import ( | |||||
22 | hex, |
|
23 | hex, | |
23 | nullhex, |
|
24 | nullhex, | |
24 | nullid, |
|
25 | nullid, | |
|
26 | nullrev, | |||
25 | short, |
|
27 | short, | |
26 | ) |
|
28 | ) | |
27 | from . import ( |
|
29 | from . import ( | |
@@ -1517,6 +1519,226 def debugrename(ui, repo, file1, *pats, | |||||
1517 | else: |
|
1519 | else: | |
1518 | ui.write(_("%s not renamed\n") % rel) |
|
1520 | ui.write(_("%s not renamed\n") % rel) | |
1519 |
|
1521 | |||
|
1522 | @command('debugrevlog', commands.debugrevlogopts + | |||
|
1523 | [('d', 'dump', False, _('dump index data'))], | |||
|
1524 | _('-c|-m|FILE'), | |||
|
1525 | optionalrepo=True) | |||
|
1526 | def debugrevlog(ui, repo, file_=None, **opts): | |||
|
1527 | """show data and statistics about a revlog""" | |||
|
1528 | r = cmdutil.openrevlog(repo, 'debugrevlog', file_, opts) | |||
|
1529 | ||||
|
1530 | if opts.get("dump"): | |||
|
1531 | numrevs = len(r) | |||
|
1532 | ui.write(("# rev p1rev p2rev start end deltastart base p1 p2" | |||
|
1533 | " rawsize totalsize compression heads chainlen\n")) | |||
|
1534 | ts = 0 | |||
|
1535 | heads = set() | |||
|
1536 | ||||
|
1537 | for rev in xrange(numrevs): | |||
|
1538 | dbase = r.deltaparent(rev) | |||
|
1539 | if dbase == -1: | |||
|
1540 | dbase = rev | |||
|
1541 | cbase = r.chainbase(rev) | |||
|
1542 | clen = r.chainlen(rev) | |||
|
1543 | p1, p2 = r.parentrevs(rev) | |||
|
1544 | rs = r.rawsize(rev) | |||
|
1545 | ts = ts + rs | |||
|
1546 | heads -= set(r.parentrevs(rev)) | |||
|
1547 | heads.add(rev) | |||
|
1548 | try: | |||
|
1549 | compression = ts / r.end(rev) | |||
|
1550 | except ZeroDivisionError: | |||
|
1551 | compression = 0 | |||
|
1552 | ui.write("%5d %5d %5d %5d %5d %10d %4d %4d %4d %7d %9d " | |||
|
1553 | "%11d %5d %8d\n" % | |||
|
1554 | (rev, p1, p2, r.start(rev), r.end(rev), | |||
|
1555 | r.start(dbase), r.start(cbase), | |||
|
1556 | r.start(p1), r.start(p2), | |||
|
1557 | rs, ts, compression, len(heads), clen)) | |||
|
1558 | return 0 | |||
|
1559 | ||||
|
1560 | v = r.version | |||
|
1561 | format = v & 0xFFFF | |||
|
1562 | flags = [] | |||
|
1563 | gdelta = False | |||
|
1564 | if v & revlog.REVLOGNGINLINEDATA: | |||
|
1565 | flags.append('inline') | |||
|
1566 | if v & revlog.REVLOGGENERALDELTA: | |||
|
1567 | gdelta = True | |||
|
1568 | flags.append('generaldelta') | |||
|
1569 | if not flags: | |||
|
1570 | flags = ['(none)'] | |||
|
1571 | ||||
|
1572 | nummerges = 0 | |||
|
1573 | numfull = 0 | |||
|
1574 | numprev = 0 | |||
|
1575 | nump1 = 0 | |||
|
1576 | nump2 = 0 | |||
|
1577 | numother = 0 | |||
|
1578 | nump1prev = 0 | |||
|
1579 | nump2prev = 0 | |||
|
1580 | chainlengths = [] | |||
|
1581 | ||||
|
1582 | datasize = [None, 0, 0] | |||
|
1583 | fullsize = [None, 0, 0] | |||
|
1584 | deltasize = [None, 0, 0] | |||
|
1585 | chunktypecounts = {} | |||
|
1586 | chunktypesizes = {} | |||
|
1587 | ||||
|
1588 | def addsize(size, l): | |||
|
1589 | if l[0] is None or size < l[0]: | |||
|
1590 | l[0] = size | |||
|
1591 | if size > l[1]: | |||
|
1592 | l[1] = size | |||
|
1593 | l[2] += size | |||
|
1594 | ||||
|
1595 | numrevs = len(r) | |||
|
1596 | for rev in xrange(numrevs): | |||
|
1597 | p1, p2 = r.parentrevs(rev) | |||
|
1598 | delta = r.deltaparent(rev) | |||
|
1599 | if format > 0: | |||
|
1600 | addsize(r.rawsize(rev), datasize) | |||
|
1601 | if p2 != nullrev: | |||
|
1602 | nummerges += 1 | |||
|
1603 | size = r.length(rev) | |||
|
1604 | if delta == nullrev: | |||
|
1605 | chainlengths.append(0) | |||
|
1606 | numfull += 1 | |||
|
1607 | addsize(size, fullsize) | |||
|
1608 | else: | |||
|
1609 | chainlengths.append(chainlengths[delta] + 1) | |||
|
1610 | addsize(size, deltasize) | |||
|
1611 | if delta == rev - 1: | |||
|
1612 | numprev += 1 | |||
|
1613 | if delta == p1: | |||
|
1614 | nump1prev += 1 | |||
|
1615 | elif delta == p2: | |||
|
1616 | nump2prev += 1 | |||
|
1617 | elif delta == p1: | |||
|
1618 | nump1 += 1 | |||
|
1619 | elif delta == p2: | |||
|
1620 | nump2 += 1 | |||
|
1621 | elif delta != nullrev: | |||
|
1622 | numother += 1 | |||
|
1623 | ||||
|
1624 | # Obtain data on the raw chunks in the revlog. | |||
|
1625 | chunk = r._chunkraw(rev, rev)[1] | |||
|
1626 | if chunk: | |||
|
1627 | chunktype = chunk[0] | |||
|
1628 | else: | |||
|
1629 | chunktype = 'empty' | |||
|
1630 | ||||
|
1631 | if chunktype not in chunktypecounts: | |||
|
1632 | chunktypecounts[chunktype] = 0 | |||
|
1633 | chunktypesizes[chunktype] = 0 | |||
|
1634 | ||||
|
1635 | chunktypecounts[chunktype] += 1 | |||
|
1636 | chunktypesizes[chunktype] += size | |||
|
1637 | ||||
|
1638 | # Adjust size min value for empty cases | |||
|
1639 | for size in (datasize, fullsize, deltasize): | |||
|
1640 | if size[0] is None: | |||
|
1641 | size[0] = 0 | |||
|
1642 | ||||
|
1643 | numdeltas = numrevs - numfull | |||
|
1644 | numoprev = numprev - nump1prev - nump2prev | |||
|
1645 | totalrawsize = datasize[2] | |||
|
1646 | datasize[2] /= numrevs | |||
|
1647 | fulltotal = fullsize[2] | |||
|
1648 | fullsize[2] /= numfull | |||
|
1649 | deltatotal = deltasize[2] | |||
|
1650 | if numrevs - numfull > 0: | |||
|
1651 | deltasize[2] /= numrevs - numfull | |||
|
1652 | totalsize = fulltotal + deltatotal | |||
|
1653 | avgchainlen = sum(chainlengths) / numrevs | |||
|
1654 | maxchainlen = max(chainlengths) | |||
|
1655 | compratio = 1 | |||
|
1656 | if totalsize: | |||
|
1657 | compratio = totalrawsize / totalsize | |||
|
1658 | ||||
|
1659 | basedfmtstr = '%%%dd\n' | |||
|
1660 | basepcfmtstr = '%%%dd %s(%%5.2f%%%%)\n' | |||
|
1661 | ||||
|
1662 | def dfmtstr(max): | |||
|
1663 | return basedfmtstr % len(str(max)) | |||
|
1664 | def pcfmtstr(max, padding=0): | |||
|
1665 | return basepcfmtstr % (len(str(max)), ' ' * padding) | |||
|
1666 | ||||
|
1667 | def pcfmt(value, total): | |||
|
1668 | if total: | |||
|
1669 | return (value, 100 * float(value) / total) | |||
|
1670 | else: | |||
|
1671 | return value, 100.0 | |||
|
1672 | ||||
|
1673 | ui.write(('format : %d\n') % format) | |||
|
1674 | ui.write(('flags : %s\n') % ', '.join(flags)) | |||
|
1675 | ||||
|
1676 | ui.write('\n') | |||
|
1677 | fmt = pcfmtstr(totalsize) | |||
|
1678 | fmt2 = dfmtstr(totalsize) | |||
|
1679 | ui.write(('revisions : ') + fmt2 % numrevs) | |||
|
1680 | ui.write((' merges : ') + fmt % pcfmt(nummerges, numrevs)) | |||
|
1681 | ui.write((' normal : ') + fmt % pcfmt(numrevs - nummerges, numrevs)) | |||
|
1682 | ui.write(('revisions : ') + fmt2 % numrevs) | |||
|
1683 | ui.write((' full : ') + fmt % pcfmt(numfull, numrevs)) | |||
|
1684 | ui.write((' deltas : ') + fmt % pcfmt(numdeltas, numrevs)) | |||
|
1685 | ui.write(('revision size : ') + fmt2 % totalsize) | |||
|
1686 | ui.write((' full : ') + fmt % pcfmt(fulltotal, totalsize)) | |||
|
1687 | ui.write((' deltas : ') + fmt % pcfmt(deltatotal, totalsize)) | |||
|
1688 | ||||
|
1689 | def fmtchunktype(chunktype): | |||
|
1690 | if chunktype == 'empty': | |||
|
1691 | return ' %s : ' % chunktype | |||
|
1692 | elif chunktype in string.ascii_letters: | |||
|
1693 | return ' 0x%s (%s) : ' % (hex(chunktype), chunktype) | |||
|
1694 | else: | |||
|
1695 | return ' 0x%s : ' % hex(chunktype) | |||
|
1696 | ||||
|
1697 | ui.write('\n') | |||
|
1698 | ui.write(('chunks : ') + fmt2 % numrevs) | |||
|
1699 | for chunktype in sorted(chunktypecounts): | |||
|
1700 | ui.write(fmtchunktype(chunktype)) | |||
|
1701 | ui.write(fmt % pcfmt(chunktypecounts[chunktype], numrevs)) | |||
|
1702 | ui.write(('chunks size : ') + fmt2 % totalsize) | |||
|
1703 | for chunktype in sorted(chunktypecounts): | |||
|
1704 | ui.write(fmtchunktype(chunktype)) | |||
|
1705 | ui.write(fmt % pcfmt(chunktypesizes[chunktype], totalsize)) | |||
|
1706 | ||||
|
1707 | ui.write('\n') | |||
|
1708 | fmt = dfmtstr(max(avgchainlen, compratio)) | |||
|
1709 | ui.write(('avg chain length : ') + fmt % avgchainlen) | |||
|
1710 | ui.write(('max chain length : ') + fmt % maxchainlen) | |||
|
1711 | ui.write(('compression ratio : ') + fmt % compratio) | |||
|
1712 | ||||
|
1713 | if format > 0: | |||
|
1714 | ui.write('\n') | |||
|
1715 | ui.write(('uncompressed data size (min/max/avg) : %d / %d / %d\n') | |||
|
1716 | % tuple(datasize)) | |||
|
1717 | ui.write(('full revision size (min/max/avg) : %d / %d / %d\n') | |||
|
1718 | % tuple(fullsize)) | |||
|
1719 | ui.write(('delta size (min/max/avg) : %d / %d / %d\n') | |||
|
1720 | % tuple(deltasize)) | |||
|
1721 | ||||
|
1722 | if numdeltas > 0: | |||
|
1723 | ui.write('\n') | |||
|
1724 | fmt = pcfmtstr(numdeltas) | |||
|
1725 | fmt2 = pcfmtstr(numdeltas, 4) | |||
|
1726 | ui.write(('deltas against prev : ') + fmt % pcfmt(numprev, numdeltas)) | |||
|
1727 | if numprev > 0: | |||
|
1728 | ui.write((' where prev = p1 : ') + fmt2 % pcfmt(nump1prev, | |||
|
1729 | numprev)) | |||
|
1730 | ui.write((' where prev = p2 : ') + fmt2 % pcfmt(nump2prev, | |||
|
1731 | numprev)) | |||
|
1732 | ui.write((' other : ') + fmt2 % pcfmt(numoprev, | |||
|
1733 | numprev)) | |||
|
1734 | if gdelta: | |||
|
1735 | ui.write(('deltas against p1 : ') | |||
|
1736 | + fmt % pcfmt(nump1, numdeltas)) | |||
|
1737 | ui.write(('deltas against p2 : ') | |||
|
1738 | + fmt % pcfmt(nump2, numdeltas)) | |||
|
1739 | ui.write(('deltas against other : ') + fmt % pcfmt(numother, | |||
|
1740 | numdeltas)) | |||
|
1741 | ||||
1520 | @command('debugupgraderepo', [ |
|
1742 | @command('debugupgraderepo', [ | |
1521 | ('o', 'optimize', [], _('extra optimization to perform'), _('NAME')), |
|
1743 | ('o', 'optimize', [], _('extra optimization to perform'), _('NAME')), | |
1522 | ('', 'run', False, _('performs an upgrade')), |
|
1744 | ('', 'run', False, _('performs an upgrade')), |
General Comments 0
You need to be logged in to leave comments.
Login now