在 Mac 上通过 cron 将 git push 到 github

在 Mac 上通过 cron 将 git push 到 github

我正在尝试使用git pushcrontab 运行的 bash 脚本将提交推送到 github。在脚本的末尾,我执行以下操作:

# script processes some files, then:
git add -A
git commit -a -m "Updated $(date)"
git push origin master

添加和提交工作正常(并且从 CL 运行脚本时推送工作正常,而不是使用 cron),但是使用 cron 推送到 github 时出现错误:

git: 'credential-osxkeychain' is not a git command. See 'git --help'.
fatal: could not read Username for 'https://github.com': Device not configured

我搜索过其他帖子(例如, 和),但这似乎不是 SSH 的问题(至少我尝试在 crontab 行中传递 SSH_AUTH_SOCK 环境变量,但没有起作用)。运行 OSX 10.8。

有任何想法吗?

答案1

TL;DR:通过使用 SSH 而不是 HTTPS 解决了通过 cron 进行 git push 的问题。

感谢 GitHub 的支持团队,我能够解决这个问题。

第一个问题是,git-credential-osxkeychain当 cron 任务运行时,它不在我的路径中。对我来说,gitgit-credential-osxkeychain都是在 Xcode 命令行工具目录之外运行的:

$ which git
/Applications/Xcode.app/Contents/Developer/usr/bin/git
$ which git-credential-osxkeychain
/Applications/Xcode.app/Contents/Developer/usr/bin/git-credential-osxkeychain

从 cron运行时which git,结果发现 cron 正在git从运行/usr/bin

PATH我在cron 作业的顶部添加了适当的目录:

export PATH=$PATH:/Applications/Xcode.app/Contents/Developer/usr/bin

这解决了git: 'credential-osxkeychain' is not a git command错误,但我又收到另一个错误:

fatal: could not read Username for 'https://github.com': Device not configured

在 GitHub 支持团队的建议下,我git-credential-osxkeychain通过 SSH 而不是 https 进行身份验证解决了该问题(根本不需要):

git remote set-url origin [email protected]:username/repo.git

相关内容