Mercurial > public > mercurial-scm > hg
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 |