69 lines
1.7 KiB
Bash
69 lines
1.7 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Restore LF for git-tracked files from index; strip CR from untracked *.sh in scripts/
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||
|
|
cd "${ROOT}"
|
||
|
|
|
||
|
|
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
||
|
|
echo "normalize_worktree_lf: not a git repo" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
git config core.autocrlf false 2>/dev/null || true
|
||
|
|
|
||
|
|
echo "Restoring tracked files from git index (LF)..."
|
||
|
|
git config core.autocrlf false 2>/dev/null || true
|
||
|
|
git config core.eol lf 2>/dev/null || true
|
||
|
|
|
||
|
|
# git restore 在部分环境下仍会把工作区检出为 CRLF;直接从索引 blob 写盘(LF 真相源)
|
||
|
|
rewrite_from_index() {
|
||
|
|
local n=0
|
||
|
|
while IFS= read -r f; do
|
||
|
|
[ -n "${f}" ] || continue
|
||
|
|
mkdir -p "$(dirname "${f}")"
|
||
|
|
git show ":${f}" > "${f}.tmp" && mv -f "${f}.tmp" "${f}"
|
||
|
|
n=$((n + 1))
|
||
|
|
done
|
||
|
|
echo "${n}"
|
||
|
|
}
|
||
|
|
|
||
|
|
echo "Rewriting tracked sources from git index (LF blobs)..."
|
||
|
|
paths=(
|
||
|
|
"server"
|
||
|
|
"scripts"
|
||
|
|
"deploy"
|
||
|
|
"docker"
|
||
|
|
"tests"
|
||
|
|
"web/agent"
|
||
|
|
"frontend/src"
|
||
|
|
"frontend/e2e"
|
||
|
|
"mcp"
|
||
|
|
".cursor/rules"
|
||
|
|
)
|
||
|
|
total=0
|
||
|
|
for p in "${paths[@]}"; do
|
||
|
|
count=$(git ls-files "${p}" 2>/dev/null | rewrite_from_index)
|
||
|
|
total=$((total + count))
|
||
|
|
done
|
||
|
|
echo " ${total} file(s) rewritten"
|
||
|
|
|
||
|
|
shopt -s nullglob
|
||
|
|
for f in scripts/*.sh docker/*.sh deploy/*.sh; do
|
||
|
|
[ -f "${f}" ] || continue
|
||
|
|
if grep -q $'\r' "${f}" 2>/dev/null; then
|
||
|
|
sed -i 's/\r$//' "${f}"
|
||
|
|
echo " stripped CR: ${f}"
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
|
||
|
|
for f in scripts/proxy-env.sh scripts/with-proxy.sh scripts/linux_mcp_mysql.sh UBUNTU-DEV-README.txt; do
|
||
|
|
[ -f "${f}" ] || continue
|
||
|
|
if grep -q $'\r' "${f}" 2>/dev/null; then
|
||
|
|
sed -i 's/\r$//' "${f}"
|
||
|
|
echo " stripped CR: ${f}"
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
|
||
|
|
echo "Done. Verify: python3 scripts/check_worktree_eol.py"
|