Quadern

Un push, tres plataformes

Mantenir un repositori a més d'una plataforma sol ser una tasca feta d'àlies de shell: un remot per host, un bucle que empeny a cadascun, i una nota mental…

Mantenir un repositori a més d'una plataforma sol ser una tasca feta d'àlies de shell: un remot per host, un bucle que empeny a cadascun, i una nota mental sobre quin vigila de debò la CI. torii ho modela.

working tree one .git, one history torii mirror sync gitlab primary · CI runs here github replica · own token codeberg replica · own token one push · one set of refs · a replica that rejects does not roll back the others

Primari i rèpliques

torii mirror add gitlab user paskidev gitorii --primary
torii mirror add github user paskidev gitorii
torii mirror add codeberg user paskidev gitorii
torii mirror sync

Un d'ells és el primari. No és una etiqueta: decideix amb quina plataforma parlen torii pipeline, torii issue i torii release quan no ho dius tu. Les rèpliques són còpies de la història i res més. torii mirror promote github user intercanvia quin és quin, per al dia que el primari cau o canvies de casa.

Cada remot conserva les seves credencials

Un mirror no replica els teus tokens. Cada host té la seva entrada a auth.toml, els seus permisos i la seva caducitat. Importa més del que sembla: un token que pot empènyer a la teva rèplica no necessàriament pot obrir una pull request al teu primari, i torii et diu quin falta en comptes de fallar amb un 403 sense context.

Què passa quan un rebutja

mirror sync empeny a cada remot per torns. Una rèplica que rebutja —una branca protegida, un token caducat, un host caügut— no desfà els pushes que ja han anat bé. Aquí no hi ha transacció distribuïda, i fingir que n'hi ha seria pitjor: tindries un «ha fallat» que amaga que dos dels teus tres remots ja van al davant.

La sortida anomena cada remot i què li ha passat. Arregla el que ha fallat i torna a llançar-ho; els que han anat bé no fan res la segona vegada.

Autofetch

torii mirror autofetch --enable --interval 30m
torii mirror autofetch --status

Porta del primari en segon pla perquè torii status et digui la veritat sobre quant vas endarrerit sense haver d'anar a preguntar primer.

Quan usar-ho i quan no

Els mirrors són per al mateix repositori vivint a diversos llocs: un projecte lliure que vol presència a Codeberg, una empresa que es muda de plataforma durant sis mesos, un projecte que vol una còpia fora d'una jurisdicció. No substitueixen una còpia de seguretat —tres còpies d'un force-push són tres històries trencades— i no serveixen per repartir feina entre plataformes, perquè hi ha exactament una història i tots els remots se l'emporten sencera.