Cómo usar la variable de entorno para la URL remota de Git

Mantengo un pequeño set de mis propios repositorys git y, de vez en cuando, me gustaría cambiar la máquina o el directory donde estoy almacenando los repositorys "maestros". Desafortunadamente, esto hace que se rompan todas las copys de trabajo del repository.

¿Hay alguna forma de usar una variable de entorno en una ruta "remota" para mi copy de trabajo local?

Si no, ¿hay alguna manera simple de engañar a Git (salvo que un script de fuerza bruta sh que expande una variable, lo remueva y lo reasigne a una location remota antes de empujarlo, etc.) para expandir una variable al empujar y tirar?

Puede pasar variables de configuration a git a través del entorno, lo que le permitirá ser complicado y hacer lo que quiera. Esto solo funcionará si no tiene configurado GIT_CONFIG. En los scripts de inicio de su entorno de shell puede configurar algo como:

 GIT_ORIGIN_REMOTE=git://github.com/gitster/git.git GIT_CONFIG_PARAMETERS="'remote.origin.url=${GIT_ORIGIN_REMOTE}'" 

Asegúrese de haber eliminado la línea de configuration de URL de origen remota en .git / config. Esto hará que todas las operaciones que usan el control remoto de origin operen con git://github.com/gitster/git.git . Ahora todo lo que tiene que hacer es cambiar el GIT_ORIGIN_REMOTE en su script de entorno de inicio si su directory cambia. Observe el formatting de GIT_CONFIG_PARAMETERS, es importante que sus opciones de configuration estén entre comillas simples. Si desea pasar más de una opción de configuration a Git del entorno, siga la forma de:

 GIT_CONFIG_PARAMETERS="'<config_variable>=<value>' '<config_variable>=<value>'" 

Debería poder usar esta información para configurar el entorno como mejor le parezca. No he visto esto documentado, solo lo encontré a través de la fuente, por lo que YMMV depende de la versión de Git que estés usando. Ref .: Git Tokenizing Code & Git Parsing Code

Problema interesante. ¿Todos estos repositorys tienen el mismo control remoto "cambiante"? Si es así, puedo pensar en un truco barato. Puede agregar una input de nombre de host local en /etc/hosts para la IP real de la máquina remota y hacer que todos los repositorys apunten al nombre local. Cambiar la input en /etc/hosts funcionará. No me gusta, pero podría funcionar.