Sincronizar Repositorios git con git-repos
index | about | archive | charlas | docs | links
dot
|
git
|
img
|
plt
|
tty
|
uml
todo es un repo git
Hace varios años que uso git
para el control de versiones del
código fuente en los que trabajo a diario. Pero últimamente me
estoy moviendo de una computadora a otra: una desktop, una notebook
y una netbook, es por esto que necesito tener sincronizados los
repositorios en cada una de ellas y terminé realizando un script
bash que me facilite la tarea.
Además de los repositorios de los proyectos en los que estoy involucrado en la cooperativa 1, necesito varias utilidades que en su mayoría estan siendo actualizadas constantemente en github, también necesito mis repositorios personales 2 y sobre todo las configuraciones de todas los programas que uso, que obviamente estan en un repo git!
~/.git-repos
Para no olvidarme de ningún repo, armo una lista en ~/.git-repos
,
el esquema es el siguiente:
egrep "(osiris|bash)" ~/.git-repos
parse_bash_history https://github:swooingfish/parse_bash_history aps2dot github:osiris/aps2dot blog github:osiris/osiux-blog direplos github:osiris/direplos git-bash-utils github:osiris/git-bash-utils html github:osiris/osiris.github libretA7 github:osiris/libretA7 media-bash-utils github:osiris/media-bash-utils minimal-bash-prompt github:osiris/minimal-bash-prompt multiboot github:osiris/multiboot org-bash-utils github:osiris/org-bash-utils org-mode-doc-es github:osiris/org-mode-doc-es pcap2dot github:osiris/pcap2dot sugar-graphviz github:osiris/sugar-graphviz traducciones github:osiris/traducciones
Las líneas que comienzan con #
son ignoradas. Por lo general
el directorio coincide con el nombre del repo, aunque a veces es
necesario cambiarlo.
Para acortar la url, es conveniente definir los hosts en el
~/.ssh/config
, por ejemplo para github sería asi:
Host github User git Hostname github.com
git-repos
Las tareas que realiza git-repos
son elementales:
- listar
- clonar
- pullear
- pushear
Lo interesante es que se realizan en todos los repositorios!
Supongamos que no tenemos ni un solo repo git, para obtener todos los repositorios que utilizo debería descargar la lista 3 y el script:
cd ~
git clone https://github.com/osiris/git-bash-utils
Agregar al ~/.bashrc
:
if [[ -d "$HOME/git-bash-utils" ]] then PATH="$HOME/git-bash-utils:$PATH" source $HOME/git-bash-utils/git-alias fi
Si quisiera listar todos los repositorios que contienen bash ejecutaría lo siguente:
git-repos -f bash
Si no encuentra un repo, muestra NOT FOUND y una cruz ✖ indicando que falló el comando sobre el repositorio.
Si quisiera clonar estos repositorios haría:
git-repos -f bash -c
Se clonaron todos los repositorios pero además se muestra información extra, un streak que indica los últimos 30 días y cuando se hizo por lo menos un commit.
En caso de agregar el tiempo invertido en cada commit en el formato HH:MM se puede totalizar y saber cuanto tiempo hemos invertido a lo largo del proyecto.
git-repos -f bash -t
Podríamos visualizar la última línea del log a fin de saber que es lo último que se hizo.
git-repos -f bash -g
Y para el final queda lo más importante, hacer un pull/push en todos los repositorios.
git-repos -f bash -ls
Hay más utilidades en el repositorio git-bash-utils
, en particular
recomiendo mirar el git-alias y cualquier correción/sugerencia será
bien recibida.
ChangeLog
2022-11-13 20:39
agregar y actualizar tags OpenGraph2019-04-18 00:21
Agregar hora en header date2019-04-08 02:11
Agregar archivos sin commitear :S2015-07-03 03:59
@ 01:00 hs - reemplazo :alt por :title y cambios menores2015-06-30 05:58
@ 01:00 hs - corrijo header.org para exportar individualmente y agrego posts a medio terminar2015-01-14 14:54
@ 01:00 hs - agrego sincronizar repositorios con git-repos