{"push_id":1309161019,"size":1,"distinct_size":1,"ref":"refs/heads/pr/extended-01-index-cache","head":"0387b29c1d31eb29d580c91c53f51c126539b742","before":"92c51628e4bb5b71b0f6a9e77a3903de2db1f579","commits":[{"sha":"0387b29c1d31eb29d580c91c53f51c126539b742","author":{"name":"Herbert Valerio Riedel","email":"cd0433cd53818d3212d5dd6752f1a697096e3614@gnu.org"},"message":"Refactor & optimise construction of index cache\n\nThis commit was motivated by @dcoutts' code-review comment:\n\n> Originally with using the `Sec.directoryEntries` that gave us only the\n> final version of each file, ie not all intermediate revisions. And\n> previously our strategy was to go through the final versions of each\n> file, in file order, and lookup just the ones we're interested in (which\n> in practice is 99% of them).\n>\n> Now for the new cache we want to go through all revisions, which means\n> all entries in file order. So instead of using `Sec.directoryEntries`\n> which reads from the tar index, we go straight for `Sec.directoryFirst`\n> which is block 0 and iterate through, using `lazyUnfold`.\n>\n> But we can now significantly simplify this and do it more\n> efficiently. Note that `indexLookupEntry` and `indexLookupFileEntry` are\n> expensive operations that seek in the tar file and read the tar entry at\n> that point. So lets do it exactly once per entry. The current code does\n> it once in the `lazyUnfold indexLookupEntry` and then again in `mk`. But\n> the old `mk` only did that because it had not previously looked up the\n> entry.","distinct":true,"url":"https://api.github.com/repos/hvr/cabal/commits/0387b29c1d31eb29d580c91c53f51c126539b742"}]}
{"actor":{"display_login":"hvr"}}