Fix created/last updated dates picked up by the walker - #31
Merged
Merged
Conversation
libwalker: - Include the root commit (diffed against an empty tree); files added in it were previously first seen at their next modification - Walk first-parent history instead of all commits sorted by time, and diff merges against their first parent. Merges were skipped entirely, and side-branch commits were interleaved with mainline commits, so their contents got applied and then reverted, producing wrong dates - Resume from the bundle's last commit hash rather than committer time, falling back to time if the commit is not in the history - Compute count as the real rev-list count (was the 0-based index in a time-sorted walk) - Skip unreadable entries instead of silently ending the walk chumbucket / schema: - Container symbols (methodmaps, enum structs, enums, typesets) no longer replace their nested members on change, which reset every member's created/last updated to the current commit - Set metadata on entries that lack it even when they differ, and count additions/removals as diffs so those bundles get written Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UmDZ8MBYNvgeQ52tpsJe3t
This was referenced Sep 25, 2026
Merged
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.
Symbol
created/last_updatedmetadata was wrong in several ways. Some bugs were in libwalker, others in how chumbucket merged symbols.libwalker
countwas the 0-based index in a time-sorted walk. It is now the realgit rev-list --countfor that commit, which is the SourceMod build number.chumbucket / schema
<<=operator on methodmaps, enum structs, enums and typesets replaced their nested members wholesale. So whenever a container changed, every method, property, field, entry or type was reset tocreated = last_updated = current commit. Nested members are now merged individually, keeping their metadata.Verification
libwalker/tests/history.rsbuilds a repo with a root commit, a merge with an out-of-order side branch, and a checkpoint. It checks the commits, paths, contents and rev-list counts. Added it to CI.-b). Metadata was correct for top-level and methodmap members. The old binary misdated the root-commit symbols and took "last updated" from an unmerged side commit.GetClientAuthIdis created ata7cdf17(the PR #147 merge, count 4830), and the head count is 7457. Both matchgit log --first-parent -Sandgit rev-list --count.Existing bundles hold the old dates and counts, so they should be regenerated from scratch (without
-b).🤖 Generated with Claude Code
https://claude.ai/code/session_01UmDZ8MBYNvgeQ52tpsJe3t
Generated by Claude Code