Backport negative refspec patches #8
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.
a7b1d11abrefs: Handle normalizing negative refspecsUpstream commit 2adb7bc.
Negative refspecs were added in Git v2.29.0 which allows refspecs to be
prefixed with
^1. Currently, the library is unable to normalizenegative refspecs which causes errors in different tools that rely on
libgit2. Specifically, when the library attempts to parse andnormalize a negative refspec, it returns a
GIT_EINVALIDSPECcode.Add the ability to correctly normalize negative refspecs. While this PR
will not update the behavior of
fetch, or other actions that rely onnegative refspecs, this allows us to be able to successfully parse and
normalize them. A future change will handle updating the individual
actions.
383be7b53refspec: Add func to distinguish negative refspecsUpstream commit 3d9f406.
Negative refspecs were added in Git v2.29.0 and are denoted by prefixing
a refspec with a caret. This adds a way to distinguish if a refspec is
negative and match negative refspecs.
20f77fb55remote: Handle fetching negative refspecsUpstream commit f7f30ec.
Add support for fetching with negative refspecs. Fetching from the
remote with a negative refspec will now validate any references fetched
do not match any negative refspecs and at least one non-negative
refspec. As we must ensure that fetched references do not match any of
the negative refspecs provided, we cannot short-circuit when checking
for matching refspecs.
Closes romkatv/gitstatus#438
Footnotes
https://github.com/git/git/commit/c0192df6306d4d9ad77f6015a053925b13155834 ↩