Definir variáveis ??de ambiente para Mercurial gancho
-
01-07-2019 - |
Pergunta
Eu estou tentando chamar um shell script que define um monte de variáveis ??de ambiente no nosso servidor de um gancho mercurial. O shell script é chamado bem quando uma nova changegroup vem, mas as variáveis ??de ambiente não está carregando mais passado a chamada para o shell script.
Meu arquivo hgrc sobre a aparência repositório como este:
[hooks]
changegroup = shell_script
changegroup.env = env
Eu posso ver a saída do shell script, e então a saída do comando env, mas o comando env não inclui as novas variáveis ??de ambiente definidas pelo script shell.
Eu tenho verificado que o shell script funciona bem quando executado por si só, mas quando executado no contexto do gancho mercurial não configurar adequadamente o meio ambiente.
Solução
Shell não pode modificar o seu ambiente.
http://tldp.org/LDP/abs/html/gotchas.html
Um script pode não variáveis ??de exportação de volta ao seu processo pai, o shell, ou para o meio ambiente. Assim como aprendemos em biologia, um processo filho pode herdar de um dos pais, mas não vice-versa
$ cat > eg.sh
export FOO="bar";
^D
$ bash eg.sh
$ echo $FOO;
$
Além disso, o problema é maior, como você tem várias chamadas de festa ??p>
bash 1 -> hg -> bash 2 ( shell script )
-> bash 3 ( env call )
que seria como pensar que eu poderia definir uma variável em um script php e depois magicamente obtê-lo com outro simplesmente por correr uma após a outra.