Skip to content

fix(gitstore): monorepo sync failed on retained merge commits; list filters; 3-hour default sync - #10

Merged
qiansc merged 1 commit into
mainfrom
fix/snapshot-merge-commit-time
Nov 4, 2026
Merged

qiansc merged 1 commit into
mainfrom
fix/snapshot-merge-commit-time

Conversation

@qiansc

@qiansc qiansc commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Monorepo sync fix. Snapshot retention read each retained version's committer time with git show -s. For a merge commit that is no longer a shallow boundary in a blob-filtered group mirror, show loads parent objects; with lazy fetching disabled it fails (could not fetch … from promisor remote, exit 128), so every sync of a monorepo registration failed with GIT_OPERATION_FAILED. Snapshot now uses git log -1 --no-walk --format=%ct, which reads only the commit object.
  • Default sync interval. New registrations default to 180 minutes (3 hours). Records saved without an interval keep their previous 5-minute behaviour, so existing repositories do not change.
  • Repository list. Signed-in callers can filter by manager (all, managed by me, site administrators only, or one manager) and sort by disk usage; the choices are kept in the URL (q, manager, sort). The catalog returns each repository's managers to signed-in callers only.

Verification

  • New TestSnapshotOfMergeCommitInPartialMirror reproduces the production failure before the fix and passes after it; catalog managers are covered in the repository-access test.
  • go test ./... and node scripts/check-web.mjs pass.
  • Checked the list page in Chromium: disk-usage order, each manager filter and URL state.

🤖 Generated with Claude Code

…t filters

- Snapshot uses git log --no-walk instead of show -s: for a retained merge
  commit that is no longer a shallow boundary in a blob-filtered group
  mirror, show -s loaded parent objects, failed with lazy fetching off and
  made every monorepo sync fail with GIT_OPERATION_FAILED.
- New registrations default to a 3-hour sync interval; records saved
  without an interval keep 5 minutes.
- Repository list: filter by manager (signed-in callers get managers in the
  catalog) and sort by disk usage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@qiansc
qiansc merged commit 21e16e9 into main Nov 4, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant