mirror of
https://github.com/martinvonz/jj.git
synced 2025-01-12 15:16:35 +00:00
6286cde543
This basically means that heads in a filtered graph appear in reverse chronological order. Before, "jj log -r 'tags()'" in linux-stable repo would look randomly sorted once you ran "jj debug reindex" in it. With this change, indexing is more like breadth-first search, and BFS is known to be bad at rendering nice graph (because branches run in parallel.) However, we have a post process to group topological branches, so we don't have this problem. For serialization formats like Mercurial's revlog iirc, BFS leads to bad compression ratio, but our index isn't that kind of data. Reindexing gets slightly slower, but I think this is negligible. (in Git repository) % hyperfine --warmup 3 --runs 10 "jj debug reindex --ignore-working-copy" (original) Time (mean ± σ): 1.521 s ± 0.027 s [User: 1.307 s, System: 0.211 s] Range (min … max): 1.486 s … 1.573 s 10 runs (new) Time (mean ± σ): 1.568 s ± 0.027 s [User: 1.368 s, System: 0.197 s] Range (min … max): 1.531 s … 1.625 s 10 runs Another idea is to sort heads chronologically and run DFS-based topological sorting. It's ad-hoc, but worked surprisingly well for my local repositories. For repositories with lots of long-running branches, this commit will provide more predictable result than DFS-based one. |
||
---|---|---|
.. | ||
examples | ||
src | ||
testing | ||
tests | ||
build.rs | ||
Cargo.toml |