git-refs pre-push: show push progress instead of a silent stall#1632
Merged
Conversation
The git-refs pre-push path pushed the queued checkpoint refs via batchPushRefs with no output, so pushing a large backlog (e.g. a freshly migrated repo) looked like git had hung for 30+ seconds while `git push` reported only "Everything up to date" for the branch. Mirror the v1-branch path's progress line: print "[entire] Pushing N checkpoint ref(s) to <target>..." with the shared startProgressDots ticker to stderr (which git surfaces during the pre-push hook), and a " done" / "pushed X of N" suffix. The per-ref fetch+replay recovery path gets its own progress line too. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Entire-Checkpoint: f55c74d61baf
Contributor
There was a problem hiding this comment.
Pull request overview
This PR improves the user experience of the git-refs pre-push hook in the manual-commit strategy by adding stderr progress output while pushing a backlog of queued per-checkpoint refs. This avoids git push appearing to hang during long-running checkpoint ref pushes, and mirrors the existing progress-dot behavior used for the v1-branch push path.
Changes:
- Print a “[entire] Pushing N checkpoint ref(s) …” progress line to stderr before the fast-path
batchPushRefscall, with dot-ticker output and a “done” suffix on success. - When the fast path fails and the code falls back to per-ref recovery, print a second progress line and finish with a “pushed X of N” suffix.
toothbrush
approved these changes
Jul 6, 2026
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.
https://entire.io/gh/entireio/cli/trails/756
What
The git-refs pre-push path pushed the queued per-checkpoint refs via
batchPushRefswith no output. Pushing a large backlog (e.g. after a bulk import/migration) looked likegit pushhad hung for 30+ seconds, while git itself only reportedEverything up-to-datefor the branch.Change
Mirror the v1-branch path's existing progress line in
prePushCheckpointRefs:startProgressDotsticker the v1 path (doPushRef) already uses, written to stderr (which git surfaces during the pre-push hook).... done; if some refs need the per-ref fetch+replay recovery, that path gets its own line ending inpushed X of N.Why it's safe / scoped
manual_commit_push.go); the git-refs push machinery it wraps is already on main.mise run lintclean; strategy suite passes.🤖 Generated with Claude Code
Note
Low Risk
User-facing stderr output only; no changes to push, queue, or recovery behavior.
Overview
Adds user-visible progress to the git-refs pre-push path in
prePushCheckpointRefs, which previously pushed queued checkpoint refs with no output during long batch operations.Before the batch fast-forward push, it prints
[entire] Pushing N checkpoint ref(s) to <target>...on stderr and runs the samestartProgressDotshelper the v1doPushRefpath already uses, finishing withdoneon success. If batch push fails and the code falls back to per-ref fetch+replay recovery, it prints a second line and ends withpushed X of N.Push behavior, queue handling, and recovery logic are unchanged—display only (
fmtimport added for this).Reviewed by Cursor Bugbot for commit a4b3f75. Configure here.