El propósito de este documento es explicar cómo es posible evitar el tedio de hacer,
uno por uno,
git pull
hacia muchos (con más de cinco, probablemente ya se justifica) repositorios remotos.
No estoy tan seguro de los posibles casos de uso,
pero fue útil cuando tuve que integrar cambios,
en varias ocasiones, desde una docena de repositorios de una organización en GitHub.
:grinning:
Además, es una buena oportunidad (o excusa) para mejorar el 🐚-fu.
(Y obviamente, también para procrastinar*.)
Para lograr un correcto funcionamiento, este documento realizará una serie de supuestos.
- Tu computador está encendido,
- estás conectado a internet,
- y, claro, Git está instalado.
- Todos los repositorios ya fueron clonados, y están ubicados en el mismo nivel,
- y estás utilizando un sistema operativo Unix-like.
Este procedimiento cuenta únicamente con dos simples pasos.
-
📂 Ve hacia el directorio —más conocido como carpeta— que almacena los repositorios.
$ cd <path/to/folder/with/repos>
-
📥 Realiza (mágicamente) un pull de todos los repositorios.
$ ls | xargs -I{} git -C {} pull
Alternativa con paralelismo:
-P <max-procs>
nos permitirá correr múltiples procesos.
(Y con este ejemplo, tendríamos máximo ocho procesos.)$ ls | xargs -P8 -I{} git -C {} pull
La validez de esta subsección depende de tu configuración de Git
(e.g. puede que uses
SSH).
Pero, si necesitas escribir tus credenciales por cada repositorio al que haces pull,
entonces, para prevenir esto, es recomendable almacenar estos datos de forma temporal.
Esto se puede lograr fácilmente, escribiendo…
$ git config --global credential.helper cache
Luego, este comando modificará tu archivo .gitconfig
,
que es donde reside tu configuración global de Git.
Esto permitirá, entonces, que Git recuerde tus credenciales en memoria, por quince minutos.
Y claro, una vez transcurrido ese tiempo, tendrás que volver a reescribir tus credenciales.
Sin embargo, ese lapso debería ser más que suficiente
para incorporar todos los cambios de los repositorios. 😌
Lo anterior funcionará únicamente si tienes instalada, al menos, la versión
v1.7.10 de Git.
No obstante, si esto no fuese así, cuentas con dos alternativas:
-
⏭️ Actualizar tu versión de Git.
De hecho, esto es fuertemente recomendado para protegerse de múltiples vulnerabilidades. -
⚠️ Agregar tus credenciales en el URL.
Es importante señalar que esta alternativa no es deseable, ya que tu contraseña,
probablemente, quedará guardada en el historial de tu terminal como texto plano. :cold_sweat:$ ls | xargs -I{} git -C {} pull "https://<your-user:your-pass>@github.com/<user|org>/{}"
Por último, notemos que este comando funcionará sólo si todos los repositorios están bajo
un mismo usuario (user
) u organización (org
) de GitHub, según el ejemplo anterior.
Esta breve guía emerge a partir de dos recursos. Mi trabajo consistió, simplemente, en mezclar…
Este documento está bajo una licencia Creative Commons 4.0.
* Bueno, yo procrastino así. 🤓