Track parsed Git URL components in GitSourceUrl (#3656)

## Summary

Closes https://github.com/astral-sh/uv/issues/3571.
This commit is contained in:
Charlie Marsh 2024-05-19 20:43:30 -04:00 committed by GitHub
parent 00f8e8cd1b
commit 0718705c21
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 45 additions and 51 deletions

View file

@ -11,8 +11,8 @@ use tracing::debug;
use distribution_filename::{SourceDistFilename, WheelFilename};
use distribution_types::{
BuildableSource, DirectSourceUrl, DirectorySourceUrl, GitSourceUrl, PathSourceUrl,
RemoteSource, Requirement, SourceUrl, UnresolvedRequirement,
BuildableSource, DirectSourceUrl, DirectorySourceUrl, GitSourceUrl, ParsedGitUrl,
PathSourceUrl, RemoteSource, Requirement, SourceUrl, UnresolvedRequirement,
UnresolvedRequirementSpecification, VersionId,
};
use pep508_rs::{Scheme, UnnamedRequirement, VersionOrUrl};
@ -240,7 +240,10 @@ impl<'a, Context: BuildContext> NamedRequirementsResolver<'a, Context> {
url: &requirement.url,
}),
Some(Scheme::GitSsh | Scheme::GitHttps | Scheme::GitHttp) => {
let git = ParsedGitUrl::try_from(requirement.url.to_url())?;
SourceUrl::Git(GitSourceUrl {
git: Cow::Owned(git.url),
subdirectory: git.subdirectory.map(Cow::Owned),
url: &requirement.url,
})
}