2009-09-27 7 views
11

Ich verwende die Versions-Anwendung auf einem Mac, um ein SVN-Repository für meine Dateien zu verwalten. Meine Arbeitskopie ist um 6   MB, aber mein Repository ist nur 1.4   MB, und ich halte fünf Revisionen im Repository!Subversion-Repository hat eine kleine Dateigröße im Vergleich zu Arbeitskopie?

Wie kann das sein?

+0

Komprimierung könnte es erklären, aber ich weiß es ehrlich gesagt nicht. 75% Komprimierung ist für reinen Text nicht unbekannt. –

+0

(Hinweis, es ist tatsächlich etwa 75%, weil SVN nur Änderungen enthält, nicht vollständige Kopien jeder Revision)) –

Antwort

18

SVN komprimiert eine Version Ihres Codes die Unterschiede zwischen den einzelnen Versionen. Deshalb braucht es nicht viel Platz.

das Repository klein zu halten, verwendet Subversion Delta-Kodierung (oder deltified Speicher) im Repository selbst. Deltification beinhaltet die Codierung der Darstellung eines Datenpakets als eine Sammlung von Differenzen gegen einige andere Chunk von Daten. Wenn die beiden Teile der Daten sind sehr ähnlich sind, diese Delta-Kodierung Ergebnisse in Speichereinsparungen für die Delta gespeicherten Datensatz-anstatt Aufnahme Raum gleich der Größe der Originaldaten, ist es nur genug Platz in Anspruch nimmt, um zu sagen, „ich sehe genau wie diese andere Stück von Daten über hier, außer die folgenden paar Änderungen.“ Das Ergebnis ist, dass die meisten der Repository-Daten, die sperrig nämlich tendenziell zu, deren Inhalt versioniert Dateien -ist bei einer viel kleineren als die ursprüngliche Volltextdarstellung dieser Daten gespeichert. Und für Repositories erstellt mit Subversion 1.4 oder höher, die Speicherplatz Einsparungen sind noch besser - jetzt diese Volltext-Darstellungen der Datei Inhalte sind selbst komprimiert.

Weitere Einzelheiten können here

5

Ihre Arbeitskopie enthält in der Regel eine Menge zusätzlicher temporärer Dateien wie Objektcode und vorkompilierte Header gefunden werden, die nicht erforderlich ist, Revision gesteuert werden. Ich denke, wenn Sie die Arbeitskopie reinigen oder eine neue Kasse machen, wird sie viel kleiner sein.

+2

Dies ist wahr, aber aus den Gründen von Nawaman und Wcoenen, auch eine neu ausgecheckte saubere Arbeitskopie ohne generiert Dateien (wie vorkompilierte Header und Objektcode) können erheblich größer sein als das Repository: Die Arbeitskopie hat zwei Kopien jeder Datei unkomprimiert (funktionierend und ursprünglich), während das Repository 1 komprimierte Kopie jeder Datei + deltafied Änderungen hat (was kann sehr klein sein, wenn die Änderungen lokalisiert wurden). –

2

Hier sind einige Gründe, die ich denken kann - Svn speichert Ihre Revisionen als Changesets und nicht versionierte Dateien. - Svn speichert Daten in seinem Backend (FSFS/BDB), das einige Komprimierungstechniken hat, die die Größe reduzieren. Wenn das Repository mehr textbasierte Dateien enthält, kann die Komprimierung umso drastischer abfallen. - Um einige Befehle (wie svn info, diff, etc) ohne Netzwerkverbindung zu unterstützen (auch um schnellere Ergebnisse zu haben), verwaltet svn einige zusätzliche Informationen in den .svn-Verzeichnissen. Die zusätzlichen Informationen enthalten eine Kopie der gesamten Arbeitskopie.

8

Nawamans Antwort hat bereits erklärt, dass die Daten im Repository recht effizient komprimiert sind.

Die andere Hälfte der Geschichte ist, dass Subversion eine pristine copy jeder Datei in den .svn Ordnern Ihrer Arbeitskopie hält. Dies ermöglicht Subversion, svn status oder svn diff Befehle zu behandeln, ohne den Repository-Server kontaktieren zu müssen, aber es verdoppelt die Größe Ihrer Arbeitskopie.

Verwandte Themen