2010-10-11 3 views
5

Das alles begann, als ich bemerkte, dass meine Repository-Größe mit einer täglichen Rate von 1 GB zunimmt. Ich habe einen einfachen Test gemacht. Erstellt einen Zweig/Tag eines vorhandenen Ordners mit einer Größe von 35 KB. Ich notierte die Revisionsnummer und ging zu $REPO/db/revs/<K-rev>/rev-number/ und überprüfte die Größe der Revision. Es war 1 Megabyte. Das klingt fischig. Irgendwelche Ideen, was hier falsch sein könnte. Mein Repo ist etwa 350 GB groß mit etwa 600.000 Revisionen.350GB SVN Repo erstellt mindestens 1MB Revision für eine einfachere Aufgabe wie Zweig/Tag

P.S. Ich habe bereits eine Neuerstellung des gesamten Repositorys begonnen, um zu sehen, ob das einen Unterschied macht, aber es wird wahrscheinlich Tage dauern.

+1

Mehr Daten notwendig: OS, SVN Version, Repobackend .. –

+0

OS Version: Sparc 5.10 Svn Version: 1.5.4 Client-Zugriff svn mit Python-Svn-Bibliotheken. –

Antwort

8

Gesendete gleiche Frage an Benutzer @@ subversion.sapache.org und bekam diese Antwort von B Smith-Mannschott - was alles erklärt. Ich habe ein Verzeichnis in dem Pfad, der 16000 Ordner enthält - für jedes Commit. Danke B Smith-Mannschott für die ausführliche Antwort. Antwort hier veröffentlichen für das Wohl anderer.


Enthält Ihr Repository ein Verzeichnis mit sehr vielen Einträgen? Sind die Änderungen, die die großen Commits produzieren, die in oder unter eines Verzeichnisses gemacht werden?

Nehmen wir an, Sie würden eine einzige Änderung an einer einzigen Datei an Ihr Repository übergeben. Nehmen wir an, weiter die Datei befindet sich hier, in Ihrem Repository:

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

Wenn Sie die Änderung verpflichten blah.txt, Die neue Revision wird die Verzeichnisknoten zwischen 'blah.txt' und dem Stammverzeichnis des Repositorys schreiben: /project/trunk/some-really-large-directory/notes, /projekt/trunk/some-really-large- Verzeichnis,/Projekt/Stamm,/Projekt, /. Beim Umschreiben eines Verzeichnisknotens speichert FSFS immer die neue Version vollständig. (Dies unterscheidet sich von der Art, wie Änderungen an Dateien werden gespeichert, die die gleiche Datei im Allgemeinen als Unterschiede zu einigen früheren Version von sind.)

Wenn/Projekt/trunk/some-wirklich-large-Verzeichnis/enthält, sagen 10000 Dateien, dann jedes commit zu blah.txt wird eine vollständige Kopie dieses Verzeichnisses (mit seinen 10'000 Namen) in Ihrem Repository speichern.

Ich bemerkte dies, als ich begann, ein persönliches Wiki unter Version Kontrolle vor ein paar Jahren zu halten. Es war ein flaches Verzeichnis von über 10'000 Text Dateien. Ich bemerkte schnell, dass die Commits ziemlich groß waren. (I seit habe geschaltet für diese Aufgabe git, für diesen und anderen Gründen.)

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