feat(installer): preserve local skill customizations

This commit is contained in:
2026-07-03 11:27:12 +08:00
parent 716d41b36e
commit af012140d3
3 changed files with 118 additions and 11 deletions
+20 -3
View File
@@ -84,10 +84,10 @@ EOF
run_install() {
local target_dir="$1"
local mode="$2"
shift
(
cd "$target_dir"
PATH="$GIT_WRAPPER_DIR:$PATH" FAKE_UPSTREAM_REPO="$UPSTREAM_REPO" bash "$INSTALL_SCRIPT" "$mode"
PATH="$GIT_WRAPPER_DIR:$PATH" FAKE_UPSTREAM_REPO="$UPSTREAM_REPO" bash "$INSTALL_SCRIPT" "$@"
)
}
@@ -127,6 +127,23 @@ main() {
assert_file_contains "$TMP_ROOT/project-codex/.codex/skills/demo/SKILL.md" "demo codex v2"
[[ -f "$TMP_ROOT/project-codex/.codex/skills/demo/SKILL.md.local.bak" ]] || fail "skill backup should exist"
printf 'custom demo codex\n' >"$TMP_ROOT/project-codex/.codex/skills/demo/SKILL.md"
(
cd "$UPSTREAM_REPO"
printf '# demo codex v3\n' > .codex/skills/demo/SKILL.md
git add .codex/skills/demo/SKILL.md
git commit -qm "upstream codex v3"
)
output="$(run_install "$TMP_ROOT/project-codex" codex)"
assert_equals "$(cat "$TMP_ROOT/project-codex/.codex/skills/demo/SKILL.md")" "custom demo codex"
assert_file_contains "$TMP_ROOT/project-codex/.codex/skills/demo/SKILL.md.upstream.new" "demo codex v3"
assert_output_contains "$output" "保留本地差异"
output="$(run_install "$TMP_ROOT/project-codex" codex --force-overwrite)"
assert_file_contains "$TMP_ROOT/project-codex/.codex/skills/demo/SKILL.md" "demo codex v3"
assert_equals "$(cat "$TMP_ROOT/project-codex/.codex/skills/demo/SKILL.md.local.bak")" "custom demo codex"
mkdir -p "$TMP_ROOT/project-claude"
output="$(run_install "$TMP_ROOT/project-claude" claude)"
assert_file_contains "$TMP_ROOT/project-claude/.claude/skills/demo/SKILL.md" "demo claude v1"
@@ -153,7 +170,7 @@ main() {
output="$(run_install "$TMP_ROOT/project-both" both)"
assert_equals "$(cat "$TMP_ROOT/project-both/AGENTS.md")" "team agents"
assert_equals "$(cat "$TMP_ROOT/project-both/CLAUDE.md")" "team claude"
assert_file_contains "$TMP_ROOT/project-both/.codex/skills/demo/SKILL.md" "demo codex v2"
assert_file_contains "$TMP_ROOT/project-both/.codex/skills/demo/SKILL.md" "demo codex v3"
assert_file_contains "$TMP_ROOT/project-both/.claude/skills/demo/SKILL.md" "demo claude v2"
assert_output_contains "$output" "跳过项目引导: AGENTS.md"
assert_output_contains "$output" "跳过项目引导: CLAUDE.md"