Skip to content

fix(server): allow long-running git pushes - #6499

Open
devchaudhary24k wants to merge 3 commits into
pingdotgg:mainfrom
devchaudhary24k:agent/fix-long-running-git-push
Open

fix(server): allow long-running git pushes#6499
devchaudhary24k wants to merge 3 commits into
pingdotgg:mainfrom
devchaudhary24k:agent/fix-long-running-git-push

Conversation

@devchaudhary24k

@devchaudhary24k devchaudhary24k commented Aug 13, 2026

Copy link
Copy Markdown

Problem

Explicit git push operations inherited the Git driver's 30-second default command timeout. Because Git waits for pre-push hooks, repositories with longer build or test gates could not use the thread-header Push action.

Fix

  • Allow the Git executor to distinguish its default timeout from an explicitly unbounded command.
  • Let the existing runGit helper accept execution options.
  • Pass { timeoutMs: null } explicitly from each push call site.
  • Keep existing timeouts unchanged for background and read-only Git operations.
  • Add a virtual-clock regression test proving a push can run beyond 30 seconds and still complete.

Impact

Long-running pre-push hooks can finish normally without requiring a new setting or an arbitrary larger timeout.

Validation

  • vp test run apps/server/src/vcs/GitVcsDriverCore.test.ts — 48 passed
  • targeted vp lint
  • targeted vp fmt --check
  • vp run --filter t3 typecheck
  • git diff --check

Fixes #5200

Implemented with GPT-5.6 Sol through the Codex harness in T3 Code.


Note

Medium Risk
Only explicit push paths disable timeouts, but a stuck hook or network can leave a push running indefinitely instead of failing at 30s.

Overview
User-initiated git push no longer hits the Git driver’s 30s default timeout, so pre-push hooks (builds, tests) can finish before the thread-header Push action fails.

The executor now treats timeoutMs: null as no timeout (distinct from omitting the field, which still defaults to 30s). runGit accepts an options object so push call sites pass { timeoutMs: null } on every push path; other Git commands keep their existing limits. A TestClock test asserts a push that runs past 31 seconds still completes successfully.

Reviewed by Cursor Bugbot for commit 407aff7. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Allow git push operations to run without a timeout in pushCurrentBranch

  • Broadens timeoutMs in ExecuteGitOptions to accept null, which skips applying Effect.timeoutOption entirely so the command runs indefinitely.
  • Updates all git push call sites in GitVcsDriverCore.ts to pass { timeoutMs: null }, removing the default 30-second timeout for push operations.
  • Behavioral Change: push operations now run indefinitely; all other git commands continue to use the default timeout when timeoutMs is undefined.

Macroscope summarized 407aff7.

@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 1844a196-bc4d-415a-869e-59f7a5b2e38f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 13, 2026
@github-actions github-actions Bot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Aug 13, 2026
@github-actions github-actions Bot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 13, 2026
@devchaudhary24k
devchaudhary24k marked this pull request as ready for review August 13, 2026 17:18
@macroscopeapp

macroscopeapp Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 407aff7

Straightforward bug fix that removes timeout limits specifically for git push operations, allowing large pushes to complete. The change is narrowly scoped with a test, and the author has prior contributions to this file.

You can customize Macroscope's approvability policy. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: don't cap hook-running git commands at 30s — pre-push hooks are killed mid-run

1 participant