mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
This PR refactors git operations in `bun install` from blocking threadpool calls using `std.process.Child` to non-blocking event loop integration using `bun.spawn`. ## Changes - Created `GitCommandRunner` for async git command execution with event loop integration - Replaced blocking `fork()` calls with async `bun.spawn` - Implemented proper two-phase checkout (clone --no-checkout, then checkout) - Moved post-checkout operations (.git deletion, .bun-tag creation) to appropriate places - Fixed argv construction to use "git" instead of hardcoded paths - Added comprehensive tests for git dependencies ## Technical Details The new implementation: - Uses tagged pointer unions for process exit handlers - Properly manages pending task counting for event loop - Handles both clone and checkout operations asynchronously - Maintains backward compatibility with existing URL handling All git operations now integrate properly with Bun's event loop, eliminating blocking operations and improving performance. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>