【发布时间】:2021-09-17 19:08:03
【问题描述】:
我目前正在处理一个项目,我想每天提交一个回购协议作为第三次备份。我编写了以下小脚本来快速提交当天的更改:
REPO_PATH="/Users/niekvandepas/my-project"
git -C "$REPO_PATH" add -A
git -C "$REPO_PATH" commit -m "`date`"
脚本按预期工作,使用时间戳提交我当天的更改。现在我希望能够每天自动运行这个脚本。我尝试为此使用cron,但我遇到了一个关于(我认为)目录或文件权限的问题。
我已将上述脚本放入/usr/local/bin/commitscript.sh 并验证它仍然有效。然后,我将以下行添加到我的用户 crontab(crontab -e,没有 sudo):
0 10 * * * /usr/local/bin/commitscript.sh > /tmp/cron.log 2> /tmp/cron.err
但是,当 10:00 到来时,我的更改没有提交,/tmp/cron.err 有以下几行:
fatal: Unable to read current working directory: Operation not permitted
fatal: Unable to read current working directory: Operation not permitted
我假设这两个都是致命的 git 错误,分别是 git add 和 git commit。这让我很困惑,因为它是我的用户 crontab,而 git repo 位于我的主目录中。有什么想法吗?
顺便说一句,我正在运行 macOS Big Sur 11.4 并已授予 iTerm 完整磁盘访问权限。
【问题讨论】:
-
可能它是在您的用户无权访问的工作目录下运行的,在运行
git之前尝试cd进入一个已知的正常目录 -
嗯,
cding 进入项目目录似乎工作正常,只是git命令给我带来了麻烦。 -
您是否尝试像使用 iTerm 一样授予对
cron本身的访问权限(例如,全盘访问)? -
@Matt 我检查了,但我没有看到
cron在安全和隐私设置中请求 FDA。 -
尝试手动添加,看看错误是否依然存在。由于 cron 作业在后台运行,因此该条目可能不会自动添加到列表中。