Ensure symlink warning is shown (#15126)

Fixes #15115, see also https://github.com/clap-rs/clap/discussions/6092

<img width="1079" height="1030" alt="image"
src="https://github.com/user-attachments/assets/05b003a6-9ca0-4f2b-8a74-078aa155ce6d"
/>
This commit is contained in:
konsti 2025-08-07 15:56:59 +02:00 committed by GitHub
parent 9c634d9b13
commit 84d57f2ee9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 67 additions and 11 deletions

View file

@ -2769,6 +2769,11 @@ pub struct VenvArgs {
/// ///
/// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and /// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and
/// Windows. /// Windows.
///
/// WARNING: The use of symlink link mode is discouraged, as they create tight coupling between
/// the cache and the target environment. For example, clearing the cache (`uv cache clear`)
/// will break all installed packages by way of removing the underlying source files. Use
/// symlinks with caution.
#[arg(long, value_enum, env = EnvVars::UV_LINK_MODE)] #[arg(long, value_enum, env = EnvVars::UV_LINK_MODE)]
pub link_mode: Option<uv_install_wheel::LinkMode>, pub link_mode: Option<uv_install_wheel::LinkMode>,
@ -4808,6 +4813,11 @@ pub struct ToolUpgradeArgs {
/// ///
/// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and /// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and
/// Windows. /// Windows.
///
/// WARNING: The use of symlink link mode is discouraged, as they create tight coupling between
/// the cache and the target environment. For example, clearing the cache (`uv cache clear`)
/// will break all installed packages by way of removing the underlying source files. Use
/// symlinks with caution.
#[arg( #[arg(
long, long,
value_enum, value_enum,
@ -5612,6 +5622,11 @@ pub struct InstallerArgs {
/// ///
/// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and /// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and
/// Windows. /// Windows.
///
/// WARNING: The use of symlink link mode is discouraged, as they create tight coupling between
/// the cache and the target environment. For example, clearing the cache (`uv cache clear`)
/// will break all installed packages by way of removing the underlying source files. Use
/// symlinks with caution.
#[arg( #[arg(
long, long,
value_enum, value_enum,
@ -5824,6 +5839,11 @@ pub struct ResolverArgs {
/// ///
/// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and /// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and
/// Windows. /// Windows.
///
/// WARNING: The use of symlink link mode is discouraged, as they create tight coupling between
/// the cache and the target environment. For example, clearing the cache (`uv cache clear`)
/// will break all installed packages by way of removing the underlying source files. Use
/// symlinks with caution.
#[arg( #[arg(
long, long,
value_enum, value_enum,
@ -6028,6 +6048,11 @@ pub struct ResolverInstallerArgs {
/// ///
/// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and /// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and
/// Windows. /// Windows.
///
/// WARNING: The use of symlink link mode is discouraged, as they create tight coupling between
/// the cache and the target environment. For example, clearing the cache (`uv cache clear`)
/// will break all installed packages by way of removing the underlying source files. Use
/// symlinks with caution.
#[arg( #[arg(
long, long,
value_enum, value_enum,

View file

@ -27,11 +27,6 @@ pub enum LinkMode {
/// Hard link packages from the wheel into the `site-packages` directory. /// Hard link packages from the wheel into the `site-packages` directory.
Hardlink, Hardlink,
/// Symbolically link packages from the wheel into the `site-packages` directory. /// Symbolically link packages from the wheel into the `site-packages` directory.
///
/// WARNING: The use of symlinks is discouraged, as they create tight coupling between the
/// cache and the target environment. For example, clearing the cache (`uv cache clear`) will
/// break all installed packages by way of removing the underlying source files. Use symlinks
/// with caution.
Symlink, Symlink,
} }

View file

@ -685,6 +685,11 @@ pub struct ResolverInstallerOptions {
/// ///
/// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and /// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and
/// Windows. /// Windows.
///
/// WARNING: The use of symlink link mode is discouraged, as they create tight coupling between
/// the cache and the target environment. For example, clearing the cache (`uv cache clear`)
/// will break all installed packages by way of removing the underlying source files. Use
/// symlinks with caution.
#[option( #[option(
default = "\"clone\" (macOS) or \"hardlink\" (Linux, Windows)", default = "\"clone\" (macOS) or \"hardlink\" (Linux, Windows)",
value_type = "str", value_type = "str",
@ -1568,6 +1573,11 @@ pub struct PipOptions {
/// ///
/// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and /// Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and
/// Windows. /// Windows.
///
/// WARNING: The use of symlink link mode is discouraged, as they create tight coupling between
/// the cache and the target environment. For example, clearing the cache (`uv cache clear`)
/// will break all installed packages by way of removing the underlying source files. Use
/// symlinks with caution.
#[option( #[option(
default = "\"clone\" (macOS) or \"hardlink\" (Linux, Windows)", default = "\"clone\" (macOS) or \"hardlink\" (Linux, Windows)",
value_type = "str", value_type = "str",

View file

@ -151,6 +151,7 @@ uv run [OPTIONS] [COMMAND]
<li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li> <li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li>
</ul></dd><dt id="uv-run--link-mode"><a href="#uv-run--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-run--link-mode"><a href="#uv-run--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -509,6 +510,7 @@ uv add [OPTIONS] <PACKAGES|--requirements <REQUIREMENTS>>
<li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li> <li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li>
</ul></dd><dt id="uv-add--link-mode"><a href="#uv-add--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-add--link-mode"><a href="#uv-add--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -702,6 +704,7 @@ uv remove [OPTIONS] <PACKAGES>...
<li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li> <li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li>
</ul></dd><dt id="uv-remove--link-mode"><a href="#uv-remove--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-remove--link-mode"><a href="#uv-remove--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -883,6 +886,7 @@ uv version [OPTIONS] [VALUE]
<li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li> <li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li>
</ul></dd><dt id="uv-version--link-mode"><a href="#uv-version--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-version--link-mode"><a href="#uv-version--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -1080,6 +1084,7 @@ uv sync [OPTIONS]
<li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li> <li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li>
</ul></dd><dt id="uv-sync--link-mode"><a href="#uv-sync--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-sync--link-mode"><a href="#uv-sync--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -1321,6 +1326,7 @@ uv lock [OPTIONS]
</ul></dd><dt id="uv-lock--link-mode"><a href="#uv-lock--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-lock--link-mode"><a href="#uv-lock--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>This option is only used when building source distributions.</p> <p>This option is only used when building source distributions.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -1499,6 +1505,7 @@ uv export [OPTIONS]
</ul></dd><dt id="uv-export--link-mode"><a href="#uv-export--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-export--link-mode"><a href="#uv-export--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>This option is only used when building source distributions.</p> <p>This option is only used when building source distributions.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -1690,6 +1697,7 @@ uv tree [OPTIONS]
</ul></dd><dt id="uv-tree--link-mode"><a href="#uv-tree--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-tree--link-mode"><a href="#uv-tree--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>This option is only used when building source distributions.</p> <p>This option is only used when building source distributions.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -1953,6 +1961,7 @@ uv tool run [OPTIONS] [COMMAND]
<li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li> <li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li>
</ul></dd><dt id="uv-tool-run--link-mode"><a href="#uv-tool-run--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-tool-run--link-mode"><a href="#uv-tool-run--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -2127,6 +2136,7 @@ uv tool install [OPTIONS] <PACKAGE>
<li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li> <li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li>
</ul></dd><dt id="uv-tool-install--link-mode"><a href="#uv-tool-install--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-tool-install--link-mode"><a href="#uv-tool-install--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -2293,6 +2303,7 @@ uv tool upgrade [OPTIONS] <NAME>...
<li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li> <li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li>
</ul></dd><dt id="uv-tool-upgrade--link-mode"><a href="#uv-tool-upgrade--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-tool-upgrade--link-mode"><a href="#uv-tool-upgrade--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -3465,6 +3476,7 @@ uv pip compile [OPTIONS] <SRC_FILE|--group <GROUP>>
</ul></dd><dt id="uv-pip-compile--link-mode"><a href="#uv-pip-compile--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-pip-compile--link-mode"><a href="#uv-pip-compile--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>This option is only used when building source distributions.</p> <p>This option is only used when building source distributions.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -3755,6 +3767,7 @@ uv pip sync [OPTIONS] <SRC_FILE>...
<li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li> <li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li>
</ul></dd><dt id="uv-pip-sync--link-mode"><a href="#uv-pip-sync--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-pip-sync--link-mode"><a href="#uv-pip-sync--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -4024,6 +4037,7 @@ uv pip install [OPTIONS] <PACKAGE|--requirements <REQUIREMENTS>|--editable <EDIT
<li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li> <li><code>subprocess</code>: Use the <code>keyring</code> command for credential lookup</li>
</ul></dd><dt id="uv-pip-install--link-mode"><a href="#uv-pip-install--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-pip-install--link-mode"><a href="#uv-pip-install--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -4812,6 +4826,7 @@ uv venv [OPTIONS] [PATH]
</ul></dd><dt id="uv-venv--link-mode"><a href="#uv-venv--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-venv--link-mode"><a href="#uv-venv--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>This option is only used for installing seed packages.</p> <p>This option is only used for installing seed packages.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>
@ -4967,6 +4982,7 @@ uv build [OPTIONS] [SRC]
</ul></dd><dt id="uv-build--link-mode"><a href="#uv-build--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p> </ul></dd><dt id="uv-build--link-mode"><a href="#uv-build--link-mode"><code>--link-mode</code></a> <i>link-mode</i></dt><dd><p>The method to use when installing packages from the global cache.</p>
<p>This option is only used when building source distributions.</p> <p>This option is only used when building source distributions.</p>
<p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p> <p>Defaults to <code>clone</code> (also known as Copy-on-Write) on macOS, and <code>hardlink</code> on Linux and Windows.</p>
<p>WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (<code>uv cache clear</code>) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.</p>
<p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p> <p>May also be set with the <code>UV_LINK_MODE</code> environment variable.</p><p>Possible values:</p>
<ul> <ul>
<li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li> <li><code>clone</code>: Clone (i.e., copy-on-write) packages from the wheel into the <code>site-packages</code> directory</li>

View file

@ -1483,6 +1483,11 @@ The method to use when installing packages from the global cache.
Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and
Windows. Windows.
WARNING: The use of symlink link mode is discouraged, as they create tight coupling between
the cache and the target environment. For example, clearing the cache (`uv cache clear`)
will break all installed packages by way of removing the underlying source files. Use
symlinks with caution.
**Default value**: `"clone" (macOS) or "hardlink" (Linux, Windows)` **Default value**: `"clone" (macOS) or "hardlink" (Linux, Windows)`
**Possible values**: **Possible values**:
@ -3042,6 +3047,11 @@ The method to use when installing packages from the global cache.
Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and Defaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and
Windows. Windows.
WARNING: The use of symlink link mode is discouraged, as they create tight coupling between
the cache and the target environment. For example, clearing the cache (`uv cache clear`)
will break all installed packages by way of removing the underlying source files. Use
symlinks with caution.
**Default value**: `"clone" (macOS) or "hardlink" (Linux, Windows)` **Default value**: `"clone" (macOS) or "hardlink" (Linux, Windows)`
**Possible values**: **Possible values**:

6
uv.schema.json generated
View file

@ -323,7 +323,7 @@
] ]
}, },
"link-mode": { "link-mode": {
"description": "The method to use when installing packages from the global cache.\n\nDefaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and\nWindows.", "description": "The method to use when installing packages from the global cache.\n\nDefaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and\nWindows.\n\nWARNING: The use of symlink link mode is discouraged, as they create tight coupling between\nthe cache and the target environment. For example, clearing the cache (`uv cache clear`)\nwill break all installed packages by way of removing the underlying source files. Use\nsymlinks with caution.",
"anyOf": [ "anyOf": [
{ {
"$ref": "#/definitions/LinkMode" "$ref": "#/definitions/LinkMode"
@ -1169,7 +1169,7 @@
"const": "hardlink" "const": "hardlink"
}, },
{ {
"description": "Symbolically link packages from the wheel into the `site-packages` directory.\n\nWARNING: The use of symlinks is discouraged, as they create tight coupling between the\ncache and the target environment. For example, clearing the cache (`uv cache clear`) will\nbreak all installed packages by way of removing the underlying source files. Use symlinks\nwith caution.", "description": "Symbolically link packages from the wheel into the `site-packages` directory.",
"type": "string", "type": "string",
"const": "symlink" "const": "symlink"
} }
@ -1482,7 +1482,7 @@
] ]
}, },
"link-mode": { "link-mode": {
"description": "The method to use when installing packages from the global cache.\n\nDefaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and\nWindows.", "description": "The method to use when installing packages from the global cache.\n\nDefaults to `clone` (also known as Copy-on-Write) on macOS, and `hardlink` on Linux and\nWindows.\n\nWARNING: The use of symlink link mode is discouraged, as they create tight coupling between\nthe cache and the target environment. For example, clearing the cache (`uv cache clear`)\nwill break all installed packages by way of removing the underlying source files. Use\nsymlinks with caution.",
"anyOf": [ "anyOf": [
{ {
"$ref": "#/definitions/LinkMode" "$ref": "#/definitions/LinkMode"