[07/08] update draw/status surfaces for migrated graph and metadata caches#101
Open
mjc wants to merge 63 commits into
Open
[07/08] update draw/status surfaces for migrated graph and metadata caches#101mjc wants to merge 63 commits into
mjc wants to merge 63 commits into
Conversation
(cherry picked from commit 122fdf1)
Wire a no-TUI entry point that loads the repo, skips workdir status to avoid case-colliding paths on case-insensitive filesystems, waits for the graph walker to finish, prints the commit count, and shuts down background tasks.
(cherry picked from commit 4b30648)
(cherry picked from commit 427dce7)
(cherry picked from commit 9854674)
(cherry picked from commit 6ce842f)
(cherry picked from commit dac26d1)
(cherry picked from commit 77e669a)
(cherry picked from commit 1484548)
(cherry picked from commit e5bd31d)
(cherry picked from commit f956dcc)
(cherry picked from commit f4c985d)
(cherry picked from commit 4461f87)
(cherry picked from commit 4ccd4cc)
(cherry picked from commit 28598c0)
(cherry picked from commit 3ddc288)
(cherry picked from commit dc4e23c)
(cherry picked from commit 9b607eb)
Skip commit diff refresh for the uncommitted pseudo-row when the first GraphWindow is applied, and add a regression test that reproduces the spike-06 TUI crash.
(cherry picked from commit c244fc5)
(cherry picked from commit 054ee9d)
(cherry picked from commit a9c3557)
(cherry picked from commit dd21a2b)
(cherry picked from commit 44f4c46)
(cherry picked from commit 30c9363)
(cherry picked from commit b99b0e9)
(cherry picked from commit 7b0b990)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on
mjc/gitoxide-spike-06-app-integration.Why this PR exists:
What changed:
draw_graphto acceptOption<&git2::Repository>so the graph can still render cached/loading/empty states without forcing every path to have an eager repo handle.GraphProjectionCacheandGraphProjectionKeyto avoid rebuilding message projection when the graph version, visible range, selected row, label toggles, uncommitted-row mode, and status counts have not changed.draw_statusbarno longer takes a repo argument.wrap_wordsavoids cloning when width is zero.Algorithm difference:
GraphProjectionKey.BuiltStatusRowsinstead of scattered booleans.Performance story:
Benchmark Results for this PR
Command shape:
hyperfine --warmup 5 './target/release/guitar /home/mjc/src/linux --exit-when-graph-complete'.CPU: M1 MacBook Pro 16GB
07-draw-status1.618s97.21x1.36s0.08s89%CPU: 5950x Linux/ZFS
07-draw-status1.632s60.81x1.34s0.18s93%Memory: 5950x Linux/ZFS
07-draw-status419.89M916.59MTop 10 heaptrack allocation sites for `07-draw-status`
29430 calls, 1.61M peak - <>::finish_grow17060 calls, 0B peak - gix_ref::raw::convert::<>::from17060 calls, 878.18K peak - guitar::core::walker::Walker::new12342 calls, 0B peak - <>::push_back_tracked_path_component10240 calls, 154.43M peak - alloc::raw_vec::RawVecInner<>::finish_grow9776 calls, 7.47K peak - gix_config::parse::event::<>::to_owned2816 calls, 519B peak - gix_config::file::util::<>::push_section_internal1308 calls, 0B peak - gix_index::extension::tree::decode::one_recursive902 calls, 99B peak - facet_core::impls::alloc::string::<>::SHAPE::{{constant}}::VTABLE::parse778 calls, 0B peak - facet_reflect::partial::partial_api::lists::<>::begin_list_item