Allow complex glob patterns in one-sided refspecs with full wildmatch support #2238
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.
Addresses issue #2237. One-sided refspecs (no destination) can now use complex glob patterns like
refs/*/foo/*orrefs/*/*/branchwithout requiring valid ref name structure. Two-sided refspecs retain existing validation.Changes
Parsing logic (
gix-refspec/src/parse.rs):validated()to acceptis_one_sidedparameterMatching logic (
gix-refspec/src/match_group/util.rs):Needle::Patternvariant for full glob matching usinggix_glob::wildmatchis_complex_pattern()helper to intelligently choose between simple and complex pattern matchingrefs/heads/*) use efficientNeedle::Glob*,[...],?,\) useNeedle::Patternwith full wildmatch supportto_bstr_replace()methodTests:
refs/*/foo/*,refs/*/*/bar)is_one_sided_glob_pattern()helper for readabilityExample
Pattern Matching
The implementation provides full glob support while maintaining performance:
refs/heads/*): Use fast substring matching viaNeedle::Globrefs/*/foo/*,refs/tags/v[0-9]*): Use full wildmatch viaNeedle::PatternComplex patterns are automatically detected when they contain:
[...]?\for escapingOriginal prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.