O comando SVN funciona no shell, mas não no cron. Por que não?

2

Eu uso o cron para executar um 'svn up' todas as noites em um diretório de arquivos que eu preciso manter atualizado localmente enquanto outros estão trabalhando neles. Isso costumava funcionar bem, com um simples:

/usr/bin/svn up /path/to/directory

No entanto, desde que eu atualizei para OS X Lion no outro dia, o comando acima funciona bem no shell (bash), mas quando ele é executado a partir do cron eu recebo

Authentication realm: <https://my-server.com:443> my-server.com Subversion Repository Password for 'my.username': Authentication realm: <https://my-server.com:443> my-server.com Subversion Repository Username: svn: OPTIONS of 'https://my-server.com/path/to/directory': authorization failed: Could not authenticate to server: rejected Basic challenge (https://my-server.com)

Eu tentei desesperadamente adicionar - config-dir ao comando, mas não teve efeito. As credenciais auth parecem boas e, de qualquer forma, funcionam no bash. Eu sei o suficiente para ser perigoso, mas estou no final do meu conjunto de ferramentas aqui.

Alguém pode me apontar na direção certa?

    
por Justin Goeres 25.07.2011 / 15:45

5 respostas

2

É provável que isso se deva ao fato de que o mesmo env não é carregado com o cron como se estivesse em um shell padrão. Você pode tanto

  1. source .bashrc ou ter um script que faça isso tudo para você
  2. use o nome completo do aplicativo em vez do comando simples que você pode usar porque / usr / bin está no $ PATH
por 20.11.2011 / 04:18
2

O svn está procurando por suas informações de autenticação que estão salvas em /home/username/.subversion/auth. Mas, como Mike mencionou, o env não é o mesmo no cron e o $ HOME provavelmente é diferente. Tente definir o $ HOME antes de executar o 'svn up'.

Em / etc / crontab:

0 0 * * * username export HOME=/home/username; /usr/bin/svn up /path/to/update
    
por 19.04.2012 / 18:02
1

Neste tópico muito relacionado, um usuário posta alguma sintaxe obscura que aparentemente faz com que o ssh-agent funcione. Este encadeamento não é específico do svn, mas parece ser exatamente o mesmo problema. link

    
por 02.03.2012 / 15:37
0

Crie um novo script de shell que contente seu comando SVN. Em seguida, coloque algo assim no cron:

/bin/bash /path/to/your/script.sh

Isso fará com que o seu comando funcione no envelopamento do bash.

    
por 25.07.2011 / 15:58
-1

No OSX, você não deve usar cron , deve usar launchd e launchctl .

Aqui está um bom artigo que descreve a maneira de fazer trabalhos agendados no OSX.

    
por 13.02.2012 / 06:40