diff --git a/crates/uv-requirements/src/pyproject.rs b/crates/uv-requirements/src/pyproject.rs index f3455f679..291d94c52 100644 --- a/crates/uv-requirements/src/pyproject.rs +++ b/crates/uv-requirements/src/pyproject.rs @@ -441,18 +441,18 @@ pub(crate) fn lower_requirement( _ => return Err(LoweringError::MoreThanOneGitRef), }; + // Create a PEP 508-compatible URL. let mut url = Url::parse(&format!("git+{git}"))?; - let mut given = git.to_string(); if let Some(rev) = reference.as_str() { url.set_path(&format!("{}@{}", url.path(), rev)); - given = format!("{given}@{rev}"); } if let Some(subdirectory) = &subdirectory { url.set_fragment(Some(&format!("subdirectory={subdirectory}"))); - given = format!("{given}#subdirectory={subdirectory}"); } - let url = VerbatimUrl::from_url(url).with_given(given); - let repository = url.to_url().clone(); + let url = VerbatimUrl::from_url(url); + + let repository = git.clone(); + RequirementSource::Git { url, repository, diff --git a/crates/uv/tests/pip_install.rs b/crates/uv/tests/pip_install.rs index 08346ffd5..00d025a45 100644 --- a/crates/uv/tests/pip_install.rs +++ b/crates/uv/tests/pip_install.rs @@ -4667,13 +4667,15 @@ fn tool_uv_sources() -> Result<()> { uv_snapshot!(context.filters(), windows_filters=false, context.install() .arg("--preview") .arg("-r") - .arg(require_path), @r###" + .arg(require_path) + .arg("--extra") + .arg("utils"), @r###" success: true exit_code: 0 ----- stdout ----- ----- stderr ----- - Audited 5 packages in [TIME] + Audited 6 packages in [TIME] "### ); Ok(())