comparison mercurial/debugcommands.py @ 39151:07b82f55f351

debugrevlog: include information about intermediate snapshots As we are about to create intermediate snapshots, we need to have a way to debug them. We start by adding very simple debug output and more detailed output will comes in next changesets.
author Boris Feld <boris.feld@octobus.net>
date Fri, 27 Jul 2018 10:52:43 +0200
parents 1464183343b3
children 9d6fab487c13
comparison
equal deleted inserted replaced
39150:f39efa885a6d 39151:07b82f55f351
2093 numempty = 0 2093 numempty = 0
2094 numemptytext = 0 2094 numemptytext = 0
2095 numemptydelta = 0 2095 numemptydelta = 0
2096 # full file content 2096 # full file content
2097 numfull = 0 2097 numfull = 0
2098 # intermediate snapshot against a prior snapshot
2099 numsemi = 0
2098 # delta against previous revision 2100 # delta against previous revision
2099 numprev = 0 2101 numprev = 0
2100 # delta against first or second parent (not prev) 2102 # delta against first or second parent (not prev)
2101 nump1 = 0 2103 nump1 = 0
2102 nump2 = 0 2104 nump2 = 0
2113 chainspans = [] 2115 chainspans = []
2114 2116
2115 # data about each revision 2117 # data about each revision
2116 datasize = [None, 0, 0] 2118 datasize = [None, 0, 0]
2117 fullsize = [None, 0, 0] 2119 fullsize = [None, 0, 0]
2120 semisize = [None, 0, 0]
2118 deltasize = [None, 0, 0] 2121 deltasize = [None, 0, 0]
2119 chunktypecounts = {} 2122 chunktypecounts = {}
2120 chunktypesizes = {} 2123 chunktypesizes = {}
2121 2124
2122 def addsize(size, l): 2125 def addsize(size, l):
2152 chainbases.append(baseaddr) 2155 chainbases.append(baseaddr)
2153 chainspans.append((revaddr - baseaddr) + size) 2156 chainspans.append((revaddr - baseaddr) + size)
2154 if size == 0: 2157 if size == 0:
2155 numempty += 1 2158 numempty += 1
2156 numemptydelta += 1 2159 numemptydelta += 1
2160 elif r.issnapshot(rev):
2161 addsize(size, semisize)
2162 numsemi += 1
2157 else: 2163 else:
2158 addsize(size, deltasize) 2164 addsize(size, deltasize)
2159 if delta == rev - 1: 2165 if delta == rev - 1:
2160 numprev += 1 2166 numprev += 1
2161 if delta == p1: 2167 if delta == p1:
2185 2191
2186 chunktypecounts[chunktype] += 1 2192 chunktypecounts[chunktype] += 1
2187 chunktypesizes[chunktype] += size 2193 chunktypesizes[chunktype] += size
2188 2194
2189 # Adjust size min value for empty cases 2195 # Adjust size min value for empty cases
2190 for size in (datasize, fullsize, deltasize): 2196 for size in (datasize, fullsize, semisize, deltasize):
2191 if size[0] is None: 2197 if size[0] is None:
2192 size[0] = 0 2198 size[0] = 0
2193 2199
2194 numdeltas = numrevs - numfull - numempty 2200 numdeltas = numrevs - numfull - numempty - numsemi
2195 numoprev = numprev - nump1prev - nump2prev 2201 numoprev = numprev - nump1prev - nump2prev
2196 totalrawsize = datasize[2] 2202 totalrawsize = datasize[2]
2197 datasize[2] /= numrevs 2203 datasize[2] /= numrevs
2198 fulltotal = fullsize[2] 2204 fulltotal = fullsize[2]
2199 fullsize[2] /= numfull 2205 fullsize[2] /= numfull
2206 semitotal = semisize[2]
2207 if 0 < numsemi:
2208 semisize[2] /= numsemi
2200 deltatotal = deltasize[2] 2209 deltatotal = deltasize[2]
2201 if numdeltas > 0: 2210 if numdeltas > 0:
2202 deltasize[2] /= numdeltas 2211 deltasize[2] /= numdeltas
2203 totalsize = fulltotal + deltatotal 2212 totalsize = fulltotal + semitotal + deltatotal
2204 avgchainlen = sum(chainlengths) / numrevs 2213 avgchainlen = sum(chainlengths) / numrevs
2205 maxchainlen = max(chainlengths) 2214 maxchainlen = max(chainlengths)
2206 maxchainspan = max(chainspans) 2215 maxchainspan = max(chainspans)
2207 compratio = 1 2216 compratio = 1
2208 if totalsize: 2217 if totalsize:
2236 ui.write((' text : ') 2245 ui.write((' text : ')
2237 + fmt % pcfmt(numemptytext, numemptytext + numemptydelta)) 2246 + fmt % pcfmt(numemptytext, numemptytext + numemptydelta))
2238 ui.write((' delta : ') 2247 ui.write((' delta : ')
2239 + fmt % pcfmt(numemptydelta, numemptytext + numemptydelta)) 2248 + fmt % pcfmt(numemptydelta, numemptytext + numemptydelta))
2240 ui.write((' full : ') + fmt % pcfmt(numfull, numrevs)) 2249 ui.write((' full : ') + fmt % pcfmt(numfull, numrevs))
2250 ui.write((' inter : ') + fmt % pcfmt(numsemi, numrevs))
2241 ui.write((' deltas : ') + fmt % pcfmt(numdeltas, numrevs)) 2251 ui.write((' deltas : ') + fmt % pcfmt(numdeltas, numrevs))
2242 ui.write(('revision size : ') + fmt2 % totalsize) 2252 ui.write(('revision size : ') + fmt2 % totalsize)
2243 ui.write((' full : ') + fmt % pcfmt(fulltotal, totalsize)) 2253 ui.write((' full : ') + fmt % pcfmt(fulltotal, totalsize))
2254 ui.write((' inter : ') + fmt % pcfmt(semitotal, totalsize))
2244 ui.write((' deltas : ') + fmt % pcfmt(deltatotal, totalsize)) 2255 ui.write((' deltas : ') + fmt % pcfmt(deltatotal, totalsize))
2245 2256
2246 def fmtchunktype(chunktype): 2257 def fmtchunktype(chunktype):
2247 if chunktype == 'empty': 2258 if chunktype == 'empty':
2248 return ' %s : ' % chunktype 2259 return ' %s : ' % chunktype