Quadern

Què és torii en realitat

Git ha guanyat. Tot codi seriós hi corre a sobre, i el model de dades de sota no és el problema: és la raó que la cosa hagi sobreviscut vint anys. El problema…

Git ha guanyat. Tot codi seriós hi corre a sobre, i el model de dades de sota no és el problema: és la raó que la cosa hagi sobreviscut vint anys. El problema és la superfície. Entrar en un projecte el 2026 encara comença amb mitja pàgina de conjurs, i la meitat existeixen perquè una comanda es va dissenyar al voltant del que fa la lampisteria i no del que vol una persona.

torii és un CLI prim i amb opinions sobre el mateix magatzem d'objectes, les mateixes refs i el mateix protocol. El teu repositori continua sent un repositori de Git, els teus companys no instal·len res, i pots deixar d'usar torii en qualsevol moment sense migrar res.

torii <command> 44 commands torii tui 17 views torii-core vcs · platforms · workspace · config · auth one library, both surfaces 7 platform clients github gitlab gitea bitbucket sourcehut radicle azure libgit2 (vendored) GIT_HTTPS=0 GIT_SSH=0 objects, refs, index pure-Rust transports rustls (https) · russh (ssh) since 0.6.0 build needs a C compiler no perl · no openssl-dev no libssh2-dev · no pkg-config one binary · MIT OR Apache-2.0

Una capa, dues superfícies

El binari presenta un CLI i una TUI, i tots dos criden la mateixa biblioteca. No és un detall d'implementació que puguis ignorar: per això la TUI no té funcions que al CLI li faltin, per això no hi ha un segon fitxer de configuració, i per això un arranjament a sync aterra als dos alhora. Una TUI cargolada a un CLI com a programa a part es desincronitza en una sola release; una construïda sobre la mateixa capa de domini no pot.

Per què libgit2 té forats

libgit2 hi és, però compilat amb GIT_HTTPS=0 GIT_SSH=0: els seus propis transports de xarxa queden fora. L'HTTPS passa per rustls i l'SSH per russh, tots dos en Rust pur.

El motiu no és la puresa. És que els transports de libgit2 arrosseguen libcurl, libssh2 i OpenSSL, i aquests arrosseguen perl, pkg-config i un dia de compilació que no teníes previst. Sense ells, compilar torii des del codi font necessita un compilador de C i res més, i un binari ja construït no enllaça cap biblioteca en temps d'execució. Sobre musl amb la feature static corre a Alpine, a scratch i a busybox.

El cost és real i convé anomenar-lo: dues implementacions de transport que el món no porta quinze anys martellejant. La validació de push contra Bitbucket, Gitea, Forgejo i Sourcehut continua sent verificada per raonament i no per una prova contra un servidor viu.

Què vol dir aquí «pensat per a persones»

Vol dir que el verb coincideix amb la intenció. torii save -am "msg" és add i commit perquè són un sol acte. torii sync és pull i push perquè això és el que vol dir «posar-me al dia amb els altres». torii snapshot existeix perquè «deixa'm provar una cosa i poder desfer-la» és una cosa que la gent fa constantment i Git respon amb tres mecanismes que no tenen res a veure entre ells.

Vol dir també que l'eina es nega a ser silenciosament perillosa. L'escàner de secrets corre abans de cada save. Tota reescriptura d'història pren un snapshot abans. save --reset --reset-mode hard és reversible. Res d'això es pot afegir a sobre d'un client: ha de ser al camí que la comanda ja recorre.

Cap on va

L'objectiu a llarg termini no és un Git més bonic. És un sistema de control de versions dissenyat al voltant de com treballa la gent, amb torii com a camí de migració per sortir de Git quan hi hagi on anar. Aquest horitzó és llarg i es construeix en obert. Fins llavors, això és un client de Git que intenta no obligar-te a memoritzar lampisteria.