comparison mercurial/commands.py @ 14305:32a548776b65

debugrevlog: many improvements
author Sune Foldager <cryo@cyanite.org>
date Thu, 12 May 2011 22:37:52 +0200
parents 64c22db0bc38
children d5b525697ddb
comparison
equal deleted inserted replaced
14304:64c22db0bc38 14305:32a548776b65
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: