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>