Inicializa o diretório de configuração ~ / .subversion durante o provisionamento do Vagrant

0

Configurando uma caixa e configuração do Vagrant baseado em Linux, estou analisando o seguinte problema:

Durante o estágio de provisão, estou instalando o Subversion. Gostaria de, também durante o estágio de provisionamento, editar o arquivo ~/.subversion/servers para que ele obtenha as configurações de proxy necessárias.

Eu sei como fazer isso (usando sed ), no entanto, há um problema.

~/.subversion não existe neste momento.

O diretório ~/.subversion não é realmente criado até que você primeiro chame svn info , svn status ou o que for.

Então adicionei ao meu arquivo Vagrantfile ...

config.vm.provision "shell", inline: "svn info 2>/dev/null"

... e o comando é executado (com erro, pois obviamente não há diretório de trabalho para chamar info on) ...

==> default: Running provisioner: shell...
    default: Running: inline script
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

... mas ainda não há ~/subversion .

Eu não entendo muito bem porque svn info , que faz o truque (de configurar ~/.subversion ) funciona bem quando estou logado na máquina virtual (via vagrant ssh ), mas falha quando executado durante o provisionamento conforme exibido acima.

Como posso inicializar ~/.subversion durante o estágio de provisionamento do Vagrant (sem acessar um repo real)?

    
por DevSolar 13.05.2016 / 13:12

1 resposta

0

config.vm.provision "shell", inline: "svn info 2>/dev/null"

Esta linha é executada como usuário root .

Consequentemente, não configura ~vagrant/.subversion , mas /root/.subversion .

A solução é executar a linha como usuário vagrant :

config.vm.provision "shell", inline: "svn info 2>/dev/null", privileged: false

Melhor ainda, execute o comando "svn info 2>/dev/null; true" - isso elimina o relatório do Vagrant que um comando de provisionamento retornou com status de saída diferente de zero.

    
por 17.05.2016 / 10:28