Causa corruzione del filesystem di una pennetta USB, ho avuto la possibilità di approfondire la conoscenza di SVN, in particolare sull’argomento recupero dati non proprio irrimediabilmente persi. 🙂
Premesso che il modo migliore è ripristinare un bel backup fresco fresco (dei 4 reporitory che utilizzo, 3 li ho recuparati così), ho trovato utili informazioni qui: in particolare il comando svnadmin verify
, svnadmin dump
e svnadmin load
, utili per verificare lo stato del repository commit per commit, per esportare i dati e per re-inserirli in un nuovo reporitory.
Di uno dei backup sono riuscito a recuperare solamente la prima parte, mentre gli ultimi 15 commit circa erano corrotti, per cui ho dovuto caricare il rimanente a mano, usando le copie di lavoro locali.
Per fortuna, spulciando i file del repository corrotto, ho trovato dove erano salvate i dati dei commit (percorso REPO_ROOT/db/revs/0
, un file per commit con in fondo la lista dei file modificati) e dove i messaggi (percorso REPO_ROOT/db/revprops/0
), potendo in questo modo effettuare un “merge” manuale commit per commit, file per file.
E visse (il programmatore) felice e contento… molto probabilmente in cerca di una nuova pennetta e di un sistema di backup un po’ meno manuale. 😀