-- Leo's gemini proxy
-- Connecting to gmi.osiux.com:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini;lang=es_AR
AUTHOR: Osiris Alejandro Gomez
EMAIL: osiux@osiux.com
DATE: 2023-05-18 09:37
[1]
Estas trabajando en una migración de mas de 200 repositorios `git` y en las pruebas de clonar los 200 *repos*, y agregar la nueva *URL* de la nueva instancia de `GitLab` ^1[2] por error gracias a un bonito *oneliner* de `bash` terminás eliminando los `.git/config` de todos los *repos*! `:(`
Una posible solución sería volver a clonar los 200 *repos*, pero en busca de una alternativa, decidí regenerar los 200 archivos de configuración de cada *repo* para volver al estado previo usando `bash`! `:)`
Para comenzar, hay algunas preferencias básicas que debe tener un `.git/config`:
[core] bare = 0 filemode = true logallrefupdates = 0 repositoryformatversion = 0
Y luego es necesario agregar el *remote* `origin` con la *URL* al *repo*, por ejemplo:
[remote "origin"] url = https://gitlab.com/osiux/git-bash-utils fetch = +refs/heads/*:refs/remotes/origin/*
Entonces, realizar esto manualmente sería muy tedioso, por ello escribí el *script* `git-config-set` que se ocupa de la recrear configuración básica y establecer la *URL* del *remote* `origin`.
Y para no tener que realizar esta operación de a un repositorio manualmente, escribí `git-repos-config` que lee el listado de los 200 *repos* desde el archivo `.git-repos` y se ocupa de regenerar todos los archivos de configuración de manera automatizada.
Dependiendo del *repo* es necesario especificar la configuración de cada *branch*, por ejemplo:
[branch "master"] remote = origin rebase = true merge = refs/heads/master [branch "develop"] remote = origin rebase = true merge = refs/heads/develop [gitflow "branch.release/0.1.0"] base = develop [branch "release/0.1.0"] remote = origin rebase = true merge = refs/heads/release/0.1.0
Para esto, es necesario obtener todos los *branchs* remotos, crear las copias locales y sincronizarlos, para esto a nivel *repo* lo resolví con `git-branch-sync` y para realizarlo en todos los repositorios de manera automatizada generé el *script* `git-repos-sync`
Todos los *scripts* utilizados están disponibles en el *repo* `git-bash-utils` ^2[3]
Copio ejemplo de configuración de 39 *repos* para que no sea tan extenso:
GIT_HOST=git.g.coop.ar GIT_PROTO=https GIT_GROUP=osiux git-repos-config GENERATE .git/config IN /home/osiris/git/osiux/ansible_role_apt_pin GENERATE .git/config IN /home/osiris/git/osiux/ansible_role_freeipa_sssd_tools GENERATE .git/config IN /home/osiris/git/osiux/ansible_role_hp_linux_tools GENERATE .git/config IN /home/osiris/git/osiux/ansible_role_tower_cli GENERATE .git/config IN /home/osiris/git/osiux/ansible_tools GENERATE .git/config IN /home/osiris/git/osiux/aps2dot GENERATE .git/config IN /home/osiris/git/osiux/charlas GENERATE .git/config IN /home/osiris/git/osiux/direplos GENERATE .git/config IN /home/osiris/git/osiux/freeipa-sssd-tools GENERATE .git/config IN /home/osiris/git/osiux/frontweb GENERATE .git/config IN /home/osiris/git/osiux/gilabash GENERATE .git/config IN /home/osiris/git/osiux/git-bash-utils GENERATE .git/config IN /home/osiris/git/osiux/gitlab GENERATE .git/config IN /home/osiris/git/osiux/gitlab-bash-utils GENERATE .git/config IN /home/osiris/git/osiux/hacktoon-floss-vinyl GENERATE .git/config IN /home/osiris/git/osiux/libretA7 GENERATE .git/config IN /home/osiris/git/osiux/links-bash-utils GENERATE .git/config IN /home/osiris/git/osiux/log-bash-utils GENERATE .git/config IN /home/osiris/git/osiux/mails2dot GENERATE .git/config IN /home/osiris/git/osiux/media-bash-utils GENERATE .git/config IN /home/osiris/git/osiux/minimal-bash-prompt GENERATE .git/config IN /home/osiris/git/osiux/multiboot GENERATE .git/config IN /home/osiris/git/osiux/multi-ssh-config GENERATE .git/config IN /home/osiris/git/osiux/openscad-reprap GENERATE .git/config IN /home/osiris/git/osiux/org-bash-utils GENERATE .git/config IN /home/osiris/git/osiux/org-mode-doc-es GENERATE .git/config IN /home/osiris/git/osiux/osiux.com GENERATE .git/config IN /home/osiris/git/osiux/osiux.gitlab.io GENERATE .git/config IN /home/osiris/git/osiux/pass-utils GENERATE .git/config IN /home/osiris/git/osiux/pcap2dot GENERATE .git/config IN /home/osiris/git/osiux/pcap2uml GENERATE .git/config IN /home/osiris/git/osiux/plan-b GENERATE .git/config IN /home/osiris/git/osiux/redmine-bash-utils GENERATE .git/config IN /home/osiris/git/osiux/sugar-graphviz GENERATE .git/config IN /home/osiris/git/osiux/test GENERATE .git/config IN /home/osiris/git/osiux/timeline2dot GENERATE .git/config IN /home/osiris/git/osiux/traducciones GENERATE .git/config IN /home/osiris/git/osiux/txt-bash-jrnl GENERATE .git/config IN /home/osiris/git/osiux/unavi
Copio ejemplo de sincronizar todos los *branchs* de 2 *repos* diferentes:
git-repos-sync SYNCHRONIZE ALL BRANCHS IN /home/osiris/git/osiux/ansible_role_apt_pin Cambiado a rama 'develop' Tu rama está actualizada con 'origin/develop'. rama 'develop' configurada para rastrear 'origin/develop' por rebase. Ya está actualizado. Cambiado a rama 'master' Tu rama está actualizada con 'origin/master'. rama 'master' configurada para rastrear 'origin/master' por rebase. Ya está actualizado. SYNCHRONIZE ALL BRANCHS IN /home/osiris/git/osiux/ansible_role_freeipa_sssd_tools remote: Enumerating objects: 6, done. remote: Counting objects: 100% (6/6), done. remote: Compressing objects: 100% (4/4), done. remote: Total 4 (delta 2), reused 0 (delta 0), pack-reused 0 Desempaquetando objetos: 100% (4/4), 528 bytes | 66.00 KiB/s, listo. Desde gitlab.com:osiux/ansible_role_freeipa_sssd_tools cfd3fcd..5c9a7e9 feature/ipa-sss-log-day -> origin/feature/ipa-sss-log-day Cambiado a rama 'develop' Tu rama está actualizada con 'origin/develop'. rama 'develop' configurada para rastrear 'origin/develop' por rebase. Ya está actualizado. Cambiado a rama 'feature/cron-syn-to-html' Tu rama está actualizada con 'origin/feature/cron-syn-to-html'. rama 'feature/cron-syn-to-html' configurada para rastrear 'origin/feature/cron-syn-to-html' por rebase. Ya está actualizado. Cambiado a rama 'feature/ipa-api-syn' Tu rama está actualizada con 'origin/feature/ipa-api-syn'. rama 'feature/ipa-api-syn' configurada para rastrear 'origin/feature/ipa-api-syn' por rebase. Ya está actualizado. Cambiado a rama 'feature/ipa-sss-log-day' Tu rama está detrás de 'origin/feature/ipa-sss-log-day' por 1 commit, y puede ser avanzada rápido. (usa "git pull" para actualizar tu rama local) rama 'feature/ipa-sss-log-day' configurada para rastrear 'origin/feature/ipa-sss-log-day' por rebase. Actualizando cfd3fcd..5c9a7e9 Fast-forward tests/cron.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 tests/cron.yml Cambiado a rama 'feature/ipa-sssd-tools-backup' Tu rama está actualizada con 'origin/feature/ipa-sssd-tools-backup'. rama 'feature/ipa-sssd-tools-backup' configurada para rastrear 'origin/feature/ipa-sssd-tools-backup' por rebase. Ya está actualizado. Cambiado a rama 'feature/persistent-ramdisk' Tu rama está actualizada con 'origin/feature/persistent-ramdisk'. rama 'feature/persistent-ramdisk' configurada para rastrear 'origin/feature/persistent-ramdisk' por rebase. Ya está actualizado. Cambiado a rama 'feature/ramdisk-fstab-sssd-db' Tu rama está actualizada con 'origin/feature/ramdisk-fstab-sssd-db'. rama 'feature/ramdisk-fstab-sssd-db' configurada para rastrear 'origin/feature/ramdisk-fstab-sssd-db' por rebase. Ya está actualizado. Cambiado a rama 'feature/yum-http-proxy' Tu rama está actualizada con 'origin/feature/yum-http-proxy'. rama 'feature/yum-http-proxy' configurada para rastrear 'origin/feature/yum-http-proxy' por rebase. Ya está actualizado. Cambiado a rama 'hotfix/switch-mirrorlist2baseurl' Tu rama está actualizada con 'origin/hotfix/switch-mirrorlist2baseurl'. rama 'hotfix/switch-mirrorlist2baseurl' configurada para rastrear 'origin/hotfix/switch-mirrorlist2baseurl' por rebase. Ya está actualizado. Cambiado a rama 'master' Tu rama está actualizada con 'origin/master'. rama 'master' configurada para rastrear 'origin/master' por rebase. Ya está actualizado. Cambiado a rama 'release/0.1.0' Tu rama está actualizada con 'origin/release/0.1.0'. rama 'release/0.1.0' configurada para rastrear 'origin/release/0.1.0' por rebase. Ya está actualizado. Cambiado a rama 'release/0.5.0' Tu rama está actualizada con 'origin/release/0.5.0'. rama 'release/0.5.0' configurada para rastrear 'origin/release/0.5.0' por rebase. Ya está actualizado. ...
Cómo configurar tokens de acceso personal a los repositorios de Git usando HTTPS[4]
generar sección `git` mediante `git-repos2org`[5]
Sincronizar Repositorios git con git-repos[6]
`2023-05-18 12:30`[7] corregir formato ejemplo git-repos-sync en *Regenerar el archivo de configuración `.git/config` de un repositorio git*
`2023-05-18 12:22`[8] corregir formato ejemplo git-repos-sync en *Regenerar el archivo de configuración `.git/config` de un repositorio git*
`2023-05-18 09:38`[9] agregar *Regenerar el archivo de configuración `.git/config` de un repositorio git*
-- Response ended
-- Page fetched on Wed May 1 23:36:46 2024