Els snapshots, i on viuen
Un snapshot és una còpia del teu arbre de treball, presa en local, que no és un commit. No té pare, ni missatge que valgui la pena escriure, ni lloc a la teva…
Un snapshot és una còpia del teu arbre de treball, presa en local, que no és un commit. No té pare, ni missatge que valgui la pena escriure, ni lloc a la teva història, ni manera d'arribar a un remot. Existeix perquè la següent cosa destructiva que facis sigui reversible.
Per què no un commit
Git ja té tres respostes a «deixa'm desar això un segon»: un commit WIP, un stash i el reflog. Cadascuna cobra un peatge. El commit WIP embruta la història que després hauras de netejar. L'stash és una única pila sense noms, i aplicar l'entrada equivocada és cara o creu. El reflog no és cap desat: registra on apuntaven les refs, així que recupera una branca, no el fitxer sense commitejar que acabes de sobreescriure.
Un snapshot és el que faltava: amb nom, llistable, restaurable per id, i invisible per a tots els altres.
On viuen, i el fallada que ho va decidir
Els snapshots s'escriuen a <gitdir>/torii/snapshots — dins de .git, no al costat.
No van començar aquí. Van començar en un directori al costat de l'arbre de treball, cosa que va bé fins que algú executa torii save -a. add_all recorre l'arbre, troba el directori de snapshots i l'indexa. Un repositori va produir així un commit de 681 MB i un push que no acabava mai.
Dins de .git el problema no es pot repetir, perquè la indexació no hi entra mai. Val la pena dir-ho clar en comptes d'arreglar-ho en silenci: durant un temps, el mecanisme de seguretat va ser el que trencava el repositori.
Què en pren un automàticament
Tota reescriptura de torii history. save --reset --reset-mode hard. worktree remove. reauthor i mailmap apply. En tots els casos l'snapshot es pren abans de tocar el primer objecte, així que torii snapshot restore <id> deixa l'arbre exactament com era.
També els pots tenir per rellotge:
torii config set snapshot.auto_enabled true
torii config set snapshot.auto_interval_minutes 30L'interval pot viure a .torii/auto-interval, que viatja amb el projecte en comptes de amb la teva màquina — útil quan el projecte és d'aquells on mitja hora de feina perduda importa.
El que encara és trencat
torii snapshot stash de vegades informa d'èxit sense haver desat res. És conegut, no està arreglat a 0.13.0, i fins que ho estigui el camí que sempre funciona és torii snapshot create -n "wip". Una xarxa de seguretat amb un forat intermitent mereix documentar-se més alt que una funció nova.