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.
STILL A WIP
Overview
This PR is split into 5 different commits to make it easier to review and revert, if there is a problem in the future. The commits are as follows:
git2
-basedfetch
implementation withgix
-based implementationgit2
-basedclone
implementation withgix
-based implementationgit2
-basedcheckout
implementation withgix
-based implementationgit2
dependency and remaininggit2
code (logging shim, rustls transport shim...)gix
functionality with user facing output, so progress is visible to userComparison of User Facing Output
TODO: record gifs comparing
main
and this branch when resolving git stuffBuild Timings
Note: All benchmarks were performed on an Ubuntu 24.04 machine with 8 CPUs and 32 GB of RAM
cargo build --workspace
Benchmark Command
Results
cargo build --workspace --release
Benchmark Command
Results
Benefits
git2
andopenssl
dependenciesgix
forgit
operations, as it is already in use withmitre/git
pluginhc
Manual testing performed
Since this change impacts the way repos are retrieved and/or updated, I performed the following manual tests to verify the new implementation is working correctly:
hc
run requiring a clonehc
run with existing repo, fetch & pull neededUpdate an existing local repo
Update an existing repo with multiple local branches
Test PyPI Package without version
Test PyPI package with version
Test NPM Package without version
Test NPM Package without version