Skip to content

[rush] Better support for Git Worktrees #5633

@dmichon-msft

Description

@dmichon-msft

Summary

Currently in a Rush repository, the build cache will be written to common/temp/build-cache unless overridden via the $HOME/.rush-user/settings.json file's buildCacheFolder property, and the pnpm store will be written to common/temp/pnpm-store unless overridden via the RUSH_PNPM_STORE_PATH environment variable.

In a multi-worktree environment, this results in duplication of the build cache and pnpm store, causing considerable excess disk usage.

Repro steps

Create a Git repository and multiple worktrees.

Expected result:
Only one build cache folder and one pnpm store.

Actual result:
One build cache folder and one pnpm store per worktree.

Details

We can address this by having the default computed location for the pnpm-store and the build cache folder be based on the git repository root, rather than the rush json folder, when the former is defined and the user is in a worktree.

We should also improve and standardize the configuration options.

Standard questions

Please answer these questions to help us investigate your issue more quickly:

Question Answer
@microsoft/rush globally installed version? 5.168.0
rushVersion from rush.json? 5.168.0
pnpmVersion, npmVersion, or yarnVersion from rush.json? 8.14.0
(if pnpm) useWorkspaces from pnpm-config.json? true
Operating system? *
Would you consider contributing a PR? Yes
Node.js version (node -v)? 22.16.0

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

Status

Needs triage

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions