fix(hooks): 用 merge-base 替代 rev-parse 修复 pre-push 变更文件检测
This commit is contained in:
+6
-4
@@ -4,8 +4,10 @@ npx tsc --noEmit
|
|||||||
|
|
||||||
# ESLint 严格检查(仅检查本次推送的变更文件,不阻塞不相关的旧代码)
|
# ESLint 严格检查(仅检查本次推送的变更文件,不阻塞不相关的旧代码)
|
||||||
# 新分支无 upstream 时,回退到与 origin/main 对比
|
# 新分支无 upstream 时,回退到与 origin/main 对比
|
||||||
BASE=$(git rev-parse --verify @{upstream} 2>/dev/null && echo "@{upstream}" || echo "origin/main")
|
MERGE_BASE=$(git merge-base HEAD @{upstream} 2>/dev/null || git merge-base HEAD origin/main 2>/dev/null)
|
||||||
CHANGED_FILES=$(git diff --name-only --diff-filter=d "$BASE"...HEAD -- '*.ts' '*.tsx' '*.js' '*.jsx' '*.mjs')
|
if [ -n "$MERGE_BASE" ]; then
|
||||||
if [ -n "$CHANGED_FILES" ]; then
|
CHANGED_FILES=$(git diff --name-only --diff-filter=d "$MERGE_BASE" HEAD -- '*.ts' '*.tsx' '*.js' '*.jsx' '*.mjs')
|
||||||
echo "$CHANGED_FILES" | xargs npx eslint --max-warnings=0
|
if [ -n "$CHANGED_FILES" ]; then
|
||||||
|
echo "$CHANGED_FILES" | xargs npx eslint --max-warnings=0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user