Allow conflicting Git URLs that refer to the same commit SHA (#2769)

## Summary

This PR leverages our lookahead direct URL resolution to significantly
improve the range of Git URLs that we can accept (e.g., if a user
provides the same requirement, once as a direct dependency, and once as
a tag). We did some of this in #2285, but the solution here is more
general and works for arbitrary transitive URLs.

Closes https://github.com/astral-sh/uv/issues/2614.
This commit is contained in:
Charlie Marsh 2024-04-02 19:36:35 -04:00 committed by GitHub
parent 20d4762776
commit c30a65ee0c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 267 additions and 158 deletions

View file

@ -47,6 +47,11 @@ impl GitUrl {
}
}
/// Returns `true` if the reference is a full commit.
pub fn is_full_commit(&self) -> bool {
matches!(self.reference, GitReference::FullCommit(_))
}
/// Return the precise commit, if known.
pub fn precise(&self) -> Option<GitSha> {
self.precise