fix(core/git_worktree): gate cache copying behind env

This commit is contained in:
James Peter
2025-10-05 11:32:59 +10:00
parent 2191b4df05
commit e293560dd6
2 changed files with 14 additions and 17 deletions
+11 -14
View File
@@ -59,8 +59,8 @@ pub const LOCAL_DEFAULT_REMOTE: &str = "local-default";
const BRANCH_METADATA_DIR: &str = "_branch-meta";
const DEFAULT_BRANCH_CACHE_DIRS: &[&str] = &["node_modules"];
fn branch_copy_targets_enabled() -> bool {
std::env::var("CODEX_BRANCH_COPY_TARGETS")
fn branch_copy_cache_dirs_enabled() -> bool {
std::env::var("CODEX_BRANCH_COPY_CACHES")
.ok()
.map(|v| {
let v = v.to_ascii_lowercase();
@@ -512,26 +512,23 @@ async fn copy_branch_cache_dirs(src_root: &Path, worktree_path: &Path) -> Result
}
fn gather_branch_cache_candidates(src_root: &Path) -> Vec<PathBuf> {
let mut out: Vec<PathBuf> = DEFAULT_BRANCH_CACHE_DIRS
.iter()
.map(PathBuf::from)
.collect();
let mut out: Vec<PathBuf> = Vec::new();
if branch_copy_targets_enabled() {
if branch_copy_cache_dirs_enabled() {
out.extend(DEFAULT_BRANCH_CACHE_DIRS.iter().map(PathBuf::from));
append_cargo_targets(src_root, &mut out);
if let Some(raw) = std::env::var_os("CARGO_TARGET_DIR") {
let path = PathBuf::from(raw);
if let Some(rel) = relative_candidate_path(&path, src_root) {
out.push(rel);
}
}
}
if let Some(raw) = std::env::var_os("CODEX_BRANCH_COPY_DIRS") {
out.extend(std::env::split_paths(&raw));
}
if let Some(raw) = std::env::var_os("CARGO_TARGET_DIR") {
let path = PathBuf::from(raw);
if let Some(rel) = relative_candidate_path(&path, src_root) {
out.push(rel);
}
}
out
}
+3 -3
View File
@@ -29,9 +29,9 @@ Notes
previous Code snapshot and optionally rewind the conversation to that point.
- `/branch [task]`: create a worktree branch and switch to it. If a
task/description is provided, it is used when naming the branch. Must be run
from the repository root (not inside another branch worktree). By default it
only mirrors `node_modules`; set `CODEX_BRANCH_COPY_TARGETS=1` to also copy
Rust build caches into the worktree.
from the repository root (not inside another branch worktree). Set
`CODEX_BRANCH_COPY_CACHES=1` to mirror `node_modules` and Rust build caches
into the worktree; otherwise no cache directories are copied automatically.
- `/merge`: merge the current worktree branch back into the default branch and
remove the worktree. Run this from inside the worktree created by `/branch`.
- `/review [focus]`: without arguments, opens a review picker so you can audit