Configuración de Variables de Entorno para Mercurial Gancho
-
01-07-2019 - |
Pregunta
Estoy tratando de llamar a un script de shell que establece un montón de variables de entorno en nuestro servidor de una mercurial gancho.La secuencia de comandos de shell que se llama bien cuando un nuevo changegroup viene, pero las variables de entorno no se lleven más allá de la llamada al script de shell.
Mi hgrc archivo en el repositorio se parece a esto:
[hooks]
changegroup = shell_script
changegroup.env = env
Puedo ver la salida de la secuencia de comandos de shell y, a continuación, la salida de la orden env, pero el env comando no incluyen el nuevo conjunto de variables de entorno por la secuencia de comandos de shell.
He comprobado que el shell script funciona correctamente cuando se ejecuta por sí mismo, pero cuando se ejecuta en el contexto de la mercurial gancho no se ha configurado correctamente el entorno.
Solución
Secuencias de comandos de Shell no se puede modificar su entorno.
http://tldp.org/LDP/abs/html/gotchas.html
Una secuencia de comandos no pueden exportar las variables de regreso a su proceso padre, el shell, o para el medio ambiente.Como aprendimos en biología, un proceso hijo puede heredar de un padre, pero no viceversa
$ cat > eg.sh
export FOO="bar";
^D
$ bash eg.sh
$ echo $FOO;
$
también, el problema es mayor, ya que tiene varias llamadas de bash
bash 1 -> hg -> bash 2 ( shell script )
-> bash 3 ( env call )
sería como pensar que podía establecer una variable en un script de php y luego por arte de magia a conseguir con otro simplemente ejecutan una después de la otra.