Skip to content

Conversation

@jensens
Copy link
Member

@jensens jensens commented Oct 23, 2025

Summary

Improves smart threading performance by processing HTTPS URLs with pushurl in parallel instead of serially.

Problem

Currently, all HTTPS URLs are processed serially to avoid overlapping credential prompts. This is overly conservative for packages that define both:

  • url = https://github.com/org/repo.git (public read)
  • pushurl = git@github.com:org/repo.git (authenticated write)

These HTTPS URLs won't prompt for credentials (they're read-only/public), so they should be safe to process in parallel.

Solution

Updated _separate_https_packages() to check for pushurl presence:

  • HTTPS without pushurl → serial processing (may prompt for credentials)
  • HTTPS with pushurl → parallel processing (read-only, no prompts)
  • SSH/fs/other → parallel processing (unchanged)

Benefits

Performance: Common public repo pattern now processed in parallel
Backward Compatible: No breaking changes, purely optimization
Smart: Leverages semantic meaning of pushurl configuration

Changes

Testing

  • ✅ New unit test verifies separation logic
  • ✅ All 185 tests pass (4 skipped)
  • ✅ Pre-commit hooks pass

Example Configuration

[mypackage]
url = https://github.com/org/mypackage.git    # Public read - now parallel!
pushurl = git@github.com:org/mypackage.git    # Authenticated write

- HTTPS URLs with pushurl are now processed in parallel
- pushurl indicates the HTTPS URL is read-only/public
- Improves performance for common public repo pattern
- Backward compatible, no breaking changes

Changes:
- Updated _separate_https_packages() to check for pushurl
- HTTPS+pushurl packages now go to parallel queue
- HTTPS-only packages still go to serial queue (credential prompts)
- Added comprehensive test coverage
- Updated documentation in README.md

Performance benefit: Packages with pattern like:
  url = https://github.com/org/repo.git (public read)
  pushurl = git@github.com:org/repo.git (authenticated write)
are now processed in parallel instead of serially.
@jensens jensens marked this pull request as ready for review October 23, 2025 18:58
@jensens jensens merged commit bff9be8 into main Oct 23, 2025
17 checks passed
@jensens jensens deleted the feature/smart-threading-pushurl branch October 23, 2025 18:58
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.

2 participants