Dove sul server sono le cartelle SVN ho controllato?
Domanda
Cercando di capire qualcosa. Ho creato una d: \ svn \ repository sul mio server. Ho commesso cartelle, ma quando torno in d: \ svn \ repository non vedo loro. Sono tutti in un database? Saranno tutti i miei repository andare nella cartella principale e svn loro tracce? Che cosa succede se ho due progetti?
Grazie.
Soluzione
Subversion non memorizza le cartelle logiche nella stessa struttura sul server, tiene traccia di tutto in un file dei delta in una "banca dati". Questo database è specifica per Subversion. Tutto impegnato a detto registro centrale va in quel file. Non troverete la struttura logica sul server, semplicemente non funziona in questo modo.
A metà del 2004, un secondo tipo di sistema di storage repository è entrato in essendo: una che non utilizza banca dati a tutti. Un repository FSFS memorizza un albero di revisione in un unico file e così tutto d'un repository di revisioni possono essere trovati in un unico sottodirectory pieno di file numerati. Le transazioni vengono creati in separata sottodirectory. Al termine, un viene creato un file singola transazione e spostato nella directory di revisioni, in tal modo garantendo che i commit sono atomiche. E perché un file di revisione è permanente e immutabile, la repository anche possibile eseguire il backup mentre “Caldo”, proprio come un Berkeley DB repository.
Il formato di revisione-file rappresenta un struttura di directory di revisione, di file contenuti, e delta contro i file in altri alberi revisione. a differenza di un database Berkeley DB, questo storage formato è portabile su differenti sistemi operativi e non è sensibile all'architettura CPU. Perché non c'è nessun file journaling o a memoria condivisa essendo utilizzato, il repository può essere in modo sicuro l'accesso in rete file system ed esaminati in una sola lettura ambiente. La mancanza di dati sovraccarico significa anche che la complessiva dimensione del repository è un po 'più piccolo.
FSFS ha prestazioni diverse caratteristiche troppo. Quando si commette un directory con un enorme numero di file, FSFS utilizza un algoritmo O (N) per aggiungere le voci, mentre Berkeley DB utilizza un O (N ^ 2) algoritmo per riscrivere la directory. D'altra parte, FSFS scrive l'ultima versione di un file come un delta contro una versione precedente, il che significa che controllando la ultimo albero è un po 'più lento di il recupero dei fulltext memorizzati in un Berkeley DB TESTA revisione. FSFS anche ha un ritardo maggiore nel finalizzare un commit, che potrebbe in casi estremi causare ai clienti di time-out quando in attesa per una risposta.
La distinzione più importante, tuttavia, è l'incapacità di essere FSFS “Incastrato” quando qualcosa va storto. Se un processo utilizzando un database Berkeley DB si imbatte in un problema di autorizzazioni o improvvisamente si blocca, il database viene lasciato inutilizzabile fino a quando un amministratore recupera esso. Se gli stessi scenari accadere ad un processo che utilizza un FSFS repository, il repository non è colpito a tutti. Nel peggiore dei casi, un po ' dati delle transazioni è lasciato alle spalle.