1873 if v & revlog.REVLOGNGINLINEDATA: |
1873 if v & revlog.REVLOGNGINLINEDATA: |
1874 flags.append('inline') |
1874 flags.append('inline') |
1875 if v & revlog.REVLOGGENERALDELTA: |
1875 if v & revlog.REVLOGGENERALDELTA: |
1876 gdelta = True |
1876 gdelta = True |
1877 flags.append('generaldelta') |
1877 flags.append('generaldelta') |
|
1878 if not flags: |
|
1879 flags = ['(none)'] |
1878 |
1880 |
1879 nummerges = 0 |
1881 nummerges = 0 |
1880 numchains = 0 |
1882 numfull = 0 |
1881 numprev = 0 |
1883 numprev = 0 |
1882 nump1 = 0 |
1884 nump1 = 0 |
1883 nump2 = 0 |
1885 nump2 = 0 |
1884 numother = 0 |
1886 numother = 0 |
1885 nump1prev = 0 |
1887 nump1prev = 0 |
1886 nump2prev = 0 |
1888 nump2prev = 0 |
|
1889 chainlengths = [] |
1887 |
1890 |
1888 datasize = [None, 0, 0L] |
1891 datasize = [None, 0, 0L] |
1889 snapshotsize = [None, 0, 0L] |
1892 fullsize = [None, 0, 0L] |
1890 deltasize = [None, 0, 0L] |
1893 deltasize = [None, 0, 0L] |
1891 |
1894 |
1892 def addsize(size, l): |
1895 def addsize(size, l): |
1893 if l[0] is None or size < l[0]: |
1896 if l[0] is None or size < l[0]: |
1894 l[0] = size |
1897 l[0] = size |
1904 addsize(r.rawsize(rev), datasize) |
1907 addsize(r.rawsize(rev), datasize) |
1905 if p2 != nullrev: |
1908 if p2 != nullrev: |
1906 nummerges += 1 |
1909 nummerges += 1 |
1907 size = r.length(rev) |
1910 size = r.length(rev) |
1908 if delta == nullrev: |
1911 if delta == nullrev: |
1909 numchains += 1 |
1912 chainlengths.append(0) |
1910 addsize(size, snapshotsize) |
1913 numfull += 1 |
|
1914 addsize(size, fullsize) |
1911 else: |
1915 else: |
|
1916 chainlengths.append(chainlengths[delta] + 1) |
1912 addsize(size, deltasize) |
1917 addsize(size, deltasize) |
1913 if gdelta: |
1918 if delta == rev - 1: |
1914 if delta == rev - 1: |
1919 numprev += 1 |
1915 numprev += 1 |
1920 if delta == p1: |
1916 if delta == p1: |
1921 nump1prev += 1 |
1917 nump1prev += 1 |
|
1918 elif delta == p2: |
|
1919 nump2prev += 1 |
|
1920 elif delta == p1: |
|
1921 nump1 += 1 |
|
1922 elif delta == p2: |
1922 elif delta == p2: |
1923 nump2 += 1 |
1923 nump2prev += 1 |
1924 elif delta != nullrev: |
1924 elif delta == p1: |
1925 numother += 1 |
1925 nump1 += 1 |
1926 |
1926 elif delta == p2: |
1927 numotherprev = numprev - nump1prev - nump2prev |
1927 nump2 += 1 |
|
1928 elif delta != nullrev: |
|
1929 numother += 1 |
|
1930 |
|
1931 numdeltas = numrevs - numfull |
|
1932 numoprev = numprev - nump1prev - nump2prev |
|
1933 totalrawsize = datasize[2] |
1928 datasize[2] /= numrevs |
1934 datasize[2] /= numrevs |
1929 snapshotsize[2] /= numchains |
1935 fulltotal = fullsize[2] |
1930 deltasize[2] /= numrevs - numchains |
1936 fullsize[2] /= numfull |
1931 |
1937 deltatotal = deltasize[2] |
1932 ui.write('format : %d\n' % format) |
1938 deltasize[2] /= numrevs - numfull |
1933 ui.write('flags : %s\n' % ', '.join(flags)) |
1939 totalsize = fulltotal + deltatotal |
1934 ui.write('revisions : %d\n' % numrevs) |
1940 avgchainlen = sum(chainlengths) / numrevs |
1935 ui.write('merges : %d\n' % nummerges) |
1941 compratio = totalrawsize / totalsize |
1936 ui.write('chains : %d\n' % numchains) |
1942 |
|
1943 basedfmtstr = '%%%dd\n' |
|
1944 basepcfmtstr = '%%%dd %s(%%5.2f%%%%)\n' |
|
1945 |
|
1946 def dfmtstr(max): |
|
1947 return basedfmtstr % len(str(max)) |
|
1948 def pcfmtstr(max, padding=0): |
|
1949 return basepcfmtstr % (len(str(max)), ' ' * padding) |
|
1950 |
|
1951 def pcfmt(value, total): |
|
1952 return (value, 100 * float(value) / total) |
|
1953 |
|
1954 ui.write('format : %d\n' % format) |
|
1955 ui.write('flags : %s\n' % ', '.join(flags)) |
|
1956 |
|
1957 ui.write('\n') |
|
1958 fmt = pcfmtstr(totalsize) |
|
1959 fmt2 = dfmtstr(totalsize) |
|
1960 ui.write('revisions : ' + fmt2 % numrevs) |
|
1961 ui.write(' merges : ' + fmt % pcfmt(nummerges, numrevs)) |
|
1962 ui.write(' normal : ' + fmt % pcfmt(numrevs - nummerges, numrevs)) |
|
1963 ui.write('revisions : ' + fmt2 % numrevs) |
|
1964 ui.write(' full : ' + fmt % pcfmt(numfull, numrevs)) |
|
1965 ui.write(' deltas : ' + fmt % pcfmt(numdeltas, numrevs)) |
|
1966 ui.write('revision size : ' + fmt2 % totalsize) |
|
1967 ui.write(' full : ' + fmt % pcfmt(fulltotal, totalsize)) |
|
1968 ui.write(' deltas : ' + fmt % pcfmt(deltatotal, totalsize)) |
|
1969 |
|
1970 ui.write('\n') |
|
1971 fmt = dfmtstr(max(avgchainlen, compratio)) |
|
1972 ui.write('avg chain length : ' + fmt % avgchainlen) |
|
1973 ui.write('compression ratio : ' + fmt % compratio) |
1937 |
1974 |
1938 if format > 0: |
1975 if format > 0: |
1939 ui.write('\ndata size (min/max/avg) : %d / %d / %d\n' |
1976 ui.write('\n') |
|
1977 ui.write('uncompressed data size (min/max/avg) : %d / %d / %d\n' |
1940 % tuple(datasize)) |
1978 % tuple(datasize)) |
1941 ui.write('compressed snapshot size (min/max/avg) : %d / %d / %d\n' |
1979 ui.write('full revision size (min/max/avg) : %d / %d / %d\n' |
1942 % tuple(snapshotsize)) |
1980 % tuple(fullsize)) |
1943 ui.write('compressed delta size (min/max/avg) : %d / %d / %d\n' |
1981 ui.write('delta size (min/max/avg) : %d / %d / %d\n' |
1944 % tuple(deltasize)) |
1982 % tuple(deltasize)) |
1945 |
1983 |
1946 if gdelta: |
1984 if numdeltas > 0: |
1947 ui.write('\ndeltas against prev : %d\n' % numprev) |
1985 ui.write('\n') |
1948 ui.write(' ..where prev = p1 : %d\n' % nump1prev) |
1986 fmt = pcfmtstr(numdeltas) |
1949 ui.write(' ..where prev = p2 : %d\n' % nump2prev) |
1987 fmt2 = pcfmtstr(numdeltas, 4) |
1950 ui.write(' ..other : %d\n' % numotherprev) |
1988 ui.write('deltas against prev : ' + fmt % pcfmt(numprev, numdeltas)) |
1951 ui.write('deltas against p1 : %d\n' % nump1) |
1989 if numprev > 0: |
1952 ui.write('deltas against p2 : %d\n' % nump2) |
1990 ui.write(' where prev = p1 : ' + fmt2 % pcfmt(nump1prev, numprev)) |
1953 ui.write('deltas against other : %d\n' % numother) |
1991 ui.write(' where prev = p2 : ' + fmt2 % pcfmt(nump2prev, numprev)) |
|
1992 ui.write(' other : ' + fmt2 % pcfmt(numoprev, numprev)) |
|
1993 if gdelta: |
|
1994 ui.write('deltas against p1 : ' + fmt % pcfmt(nump1, numdeltas)) |
|
1995 ui.write('deltas against p2 : ' + fmt % pcfmt(nump2, numdeltas)) |
|
1996 ui.write('deltas against other : ' + fmt % pcfmt(numother, numdeltas)) |
1954 |
1997 |
1955 @command('debugrevspec', [], ('REVSPEC')) |
1998 @command('debugrevspec', [], ('REVSPEC')) |
1956 def debugrevspec(ui, repo, expr): |
1999 def debugrevspec(ui, repo, expr): |
1957 '''parse and apply a revision specification''' |
2000 '''parse and apply a revision specification''' |
1958 if ui.verbose: |
2001 if ui.verbose: |