2010-10-11 5 views
5

Tutto questo è iniziato quando ho notato che la dimensione del mio repository aumenta ad una velocità giornaliera di 1 GB. Ho fatto un semplice test. Creato un ramo/tag di una cartella esistente con una dimensione di 35 KB. Ho preso nota del numero di revisione e sono andato a $REPO/db/revs/<K-rev>/rev-number/ e ho controllato la dimensione della revisione. Era 1 mega byte. Sembra strano. Qualche idea su cosa potrebbe essere sbagliato qui. Il mio repo è di circa 350 GB con circa 600.000 revisioni.350GB repo SVN crea una revisione di almeno 1 MB per anche un compito più semplice come branch/tag

P.S. Ho già avviato una ricostruzione dell'intero repository per vedere se questo fa alcuna differenza, ma probabilmente ci vorranno giorni per il completamento.

+1

Più dati necessari: OS, SVN versione, Repobackend .. –

+0

OS Version: 5.10 Sparc Svn versione: 1.5.4 Accesso client svn utilizzando le librerie svn python. –

risposta

8

Ho inviato la stessa domanda agli utenti @@ subversion.sapache.org e ho ricevuto questa risposta da B Smith-Mannschott - che spiega tutto. Ho una directory nel percorso che contiene 16000 cartelle - per ogni commit. Grazie B Smith-Mannschott per la risposta dettagliata. Pubblicando la risposta qui per il beneficio di altre persone.


Il repository contiene una directory con molte voci? Sono le modifiche che producono i grandi commit effettuati in o sotto tale una directory?

Supponiamo di assegnare un'unica modifica a un singolo file nel repository . Diamo inoltre assumere il file si trova qui, nella vostra repository:

/project/trunk/some-really-large-directory/notes/blah.txt

Quando si impegnano la modifica blah.txt, la nuova revisione riscriverà i nodi di directory tra "blah.txt" e la radice del repository: /project/trunk/some-really-large-directory/notes, /project/trunk/some-really-large- directory,/project/trunk,/project, /. Durante la riscrittura di un nodo di directory, FSFS memorizza sempre la nuova versione nella sua interezza. (Questo è diverso dal modo in cui le modifiche ai file sono memorizzati, che sono generalmente le differenze a qualche versione precedente del lo stesso file.)

Se/progetto/trunk/some-davvero-grande-directory/contiene, Dite 10000 file , quindi ogni commit su blah.txt memorizzerà una copia completa di questa directory (con i suoi 10.000 nomi) nel vostro repository.

Ho notato questo quando ho iniziato a tenere un wiki personale sotto il controllo della versione alcuni anni fa. Era una directory piatta di oltre 10.000 file di testo . Ho subito notato che i commit erano piuttosto grandi. (Da allora ho passato a git per quel compito, per questo e per altri motivi.)

vedo anche http://svn.apache.org/repos/asf/subversion/trunk/notes/subversion-design.html#server.fs.struct.bubble-up

Problemi correlati