Some checks failed
Deploy / deploy (push) Has been cancelled
服务器上 `git pull` 报「检测到可疑的仓库所有权」:
drwxr-xr-x 9 1001 1001 /root/OJDeploy/OJ2
drwxr-xr-x 8 0 0 /root/OJDeploy/OJ2/.git
原因是 `rsync -a` 展开含 `-o -g`(保留属主/属组),接收端又是 root,
所以源端的 uid 会被真写上去 —— GitHub 托管 runner 的 runner 用户是 uid 1001。
而 `.git` 在 --exclude 里,一直是当初手动 clone 时的 root。两者对不上,
git 2.35.2 起的 safe.directory 检查就把服务器上所有 git 操作挡下了。
加 --no-owner --no-group 之后文件落地归 ssh 登录用户(root)所有,不再错位。
注意这只防复发,**不修复已经错位的目录**:rsync 不带 -o/-g 时不会去改已存在
文件的属主。服务器上还要手动跑一次
chown root:root /root/OJDeploy/OJ2
只改这一个目录,**不要 -R** —— git 的属主检查不递归,而 OJ2/data 下可能是
「自带数据」形态的整个 postgres 数据目录和判题沙箱以别的 uid 建的运行目录,
递归 chown 会让它们起不来。
这个问题一直都在,只是以前没在服务器上跑过 git 命令所以没撞上。
验证:只做了 YAML 语法校验 —— 这条工作流要真的 push 到 github 才跑得起来,
本机验不了。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>