In unserem Projekt haben wir beschlossen, die Erstellungszeit durch Verwendung vorgefertigter Binärdateien zu reduzieren. Wöchentlich / monatlich erstellen wir eine stabile Version und legen sie im Repository fest. Der Build verwendet diese Binärdateien, anstatt alles aus dem Quellcode zu erstellen.
Für die Build-Geschwindigkeit ist dies fantastisch. Es ist jedoch nicht überraschend, dass die Größe der SVN-Kasse dadurch wirklich vergrößert wird. Unser Kofferraum hat derzeit eine Größe von ~ 22 GB. Mir ist klar, dass dies nicht die beabsichtigte Verwendung von Subversion ist. Aber wir haben im Moment keine Alternative.
Aber ich möchte die aktuelle Situation verbessern. Der .svn
Ordner leistet einen großen Beitrag zur Größe des Trunks auf der Festplatte. Wenn die Binärdateien aktualisiert werden, scheinen sich mehrere Basen im Ordner .svn zu befinden. Das heißt, wenn eine Binärdatei 4 GB groß ist, befindet sich eine Kopie in der .svn
. Wenn es aktualisiert wird, dann die.svn
Ordner die ursprüngliche Basis plus die neue Basis und sperrt bis zu 8 GB für diese eine Datei.
Ist es möglich, Subversion .svn
anzuweisen, für bestimmte Dateien keine Basis im Ordner zu behalten ? Über Google fand ich eine ähnliche Frage: Wie kann ich die Größe des .svn-Ordners verringern? .
Die Antwort, die Simon erhielt, war
- Verwenden Sie eine teilweise Kaufabwicklung (die bei mir nicht funktioniert, da ich die Binärdateien benötige).
- Dies ist noch keine Funktion von Subversion
- Es wurde diskutiert, wird aber erst in Subversion 1.8 ein Feature sein
Zum Glück wurde Subversion 1.8 für mich veröffentlicht. Wurde diese Funktion hinzugefügt?
Ich habe es in den Versionshinweisen nicht bemerkt . "Directory and Property Storage Reduction" sieht jedoch vielversprechend aus.
quelle
Antworten:
Es gibt keine Möglichkeit, die Notwendigkeit, makellose Produkte aufzubewahren, zu beseitigen. Es wurde darüber gesprochen, aber es ist eigentlich kein leicht zu lösendes Problem, da es so viele verschiedene Anwendungsfallsituationen gibt, die durch optionales Entfernen entstehen würden.
Mit 1.7 wurde der makellose Speicher geändert und in einigen Fällen kann die Situation sogar schlechter sein als vor 1.7. Pristines werden jetzt in Dateien gespeichert, die durch den Hash des Pristines benannt sind. Wenn Sie also mehrere identische Dateien haben, werden keine doppelten makellosen Dateien gespeichert. Wir bereinigen jedoch auch nicht mehr makellos. Also bauen sie einfach weiter auf. Sie können nicht verwendete unberührte Objekte auslösen, mit denen sie entfernt werden sollen
svn cleanup
.Es ist sinnvoll, nicht verwendete unberührte Objekte beizubehalten. Wenn Sie zwischen Zweigen wechseln, müssen Sie keine Dinge mehr herunterladen, für die Sie in 1.8 bereits die ursprünglichen Daten haben.
quelle
Wenn Sie den Bereinigungsbefehl des TortoiseSVN-Clients anstelle des
svn cleanup
Befehls verwenden,.svn
kann die Ordnergröße verringert werden, indem Sie sicherstellen, dass die Option für makellose Vakuumkopien aktiviert ist:Es wird außerdem empfohlen, die Bereinigung auf der obersten Ebene der Arbeitskopie durchzuführen, wie hier angegeben .
[Bearbeiten]
Nach dieser Antwort und SVN Änderungsprotokoll ,
svn cleanup
hat eine Option unberührte Kopien Vakuum (/vacuum
). Dies erfolgt standardmäßig ab 1.8. Ab Version 1.10 wird dies nicht mehr standardmäßig durchgeführt, sondern kann mit dem Befehl ausgeführt werdensvn cleanup --vacuum-pristines
(siehe diese Antwort ).quelle