6

Я пытаюсь использовать git push в скрипте bash, который запускается crontab, чтобы отправить коммит в github. В конце сценария я делаю это:

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

Операции add и commit работают нормально (и push работает нормально при запуске скрипта из CL, не используя cron), но я получаю ошибки при push-загрузке в github с cron:

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

Я искал другие потоки (как этот, так и этот), но это не проблема с SSH (по крайней мере, я попытался передать переменную окружения SSH_AUTH_SOCK в строку crontab, и это не сработало). Запуск OSX 10.8.

Есть идеи?

1 ответ1

5

TL; DR: Решены проблемы с git push через cron с использованием SSH вместо HTTPS.

Благодаря команде поддержки на GitHub я смог решить эту проблему.

Первая проблема заключалась в том, что git-credential-osxkeychain не был на моем пути, когда выполнялась работа cron. Для меня и git и git-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

При запуске, which git из cron, оказывается, что cron запускал git из /usr/bin .

Я добавил соответствующий каталог в мой PATH в верхней части задания cron:

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

Это решило git: 'credential-osxkeychain' is not a git command ошибкой команды git , но я получил еще одну ошибку:

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

По предложению группы поддержки GitHub я решил проблему (без необходимости использования git-credential-osxkeychain ), выполнив аутентификацию через SSH вместо https:

git remote set-url origin git@github.com:username/repo.git

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .