git push to github via cron no mac

6

Estou tentando usar git push em um script bash sendo executado pelo crontab para enviar um commit para o github. No final do script, estou fazendo isso:

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

O add e commit funcionam bem (e o push funciona bem ao executar o script a partir do CL, não usando o cron), mas eu recebo erros no push para o github com o cron:

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

Eu pesquisei outros tópicos (como isso e is ), mas não t parece ser um problema com o SSH (pelo menos eu tentei passar a variável de ambiente SSH_AUTH_SOCK na linha crontab e isso não funcionou). Executando o OSX 10.8.

Alguma idéia?

    
por Stephen Turner 12.03.2013 / 19:07

1 resposta

5

TL; DR: Solucionou problemas com o git push via cron usando SSH em vez de HTTPS.

Graças à equipe de suporte do GitHub, consegui resolver isso.

O primeiro problema foi que git-credential-osxkeychain não estava no meu caminho quando o cron job foi executado. Para mim, git e git-credential-osxkeychain estavam sendo executados fora do diretório de ferramentas de linha de comando do 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

Ao executar which git do cron, o cron estava executando git de /usr/bin .

Eu adicionei o diretório apropriado ao meu PATH no topo da tarefa do cron com:

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

Isso resolveu o erro git: 'credential-osxkeychain' is not a git command , mas recebi outro erro:

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

Por sugestão da equipe de suporte do GitHub, resolvi o problema (sem a necessidade de git-credential-osxkeychain ) autenticando via SSH em vez de https:

git remote set-url origin [email protected]:username/repo.git
    
por 13.03.2013 / 13:17