2

Für ein Archiv von Testdaten brauche ich ein Revisionskontrollsystem, das nur das Hinzufügen von Dateien erlaubt. Änderungen, Umbenennungen und andere Änderungen sind untersagt.Wie verbietet man Änderungen an allen Dateien in einem Revisionskontrollsystem?

Dies ermöglicht es, eine Code-Revision mit den aktuellen Testdaten zu testen und die gleichen Ergebnisse wie zuvor zu reproduzieren.

Wir verwenden derzeit Subversion für Quellcode. Die Testdaten werden jedoch wahrscheinlich mehrere hundert Dateien mit etwa 200 GByte Daten sein. Ich bezweifle, dass Subversion damit umgehen kann. Ich möchte die Testdaten nicht im selben Subversion-Archiv ablegen wie der Code, der nur einige MByte hat.

Auch Subversion scheint nicht das richtige Werkzeug für solch ein einfaches Problem zu sein.

Wie erstelle ich ein Verzeichnis in meinem Subversion-Repository mit einer Add-Only-Regel?

Ich bemerkte, dass nach dem Checkout die Testdaten in der Größe verdoppelt, weil es ein .svn-Verzeichnis mit Kopien jeder Datei gibt. Kann ich diese Verschwendung von Festplattenspeicher vermeiden? Jemand, der nur die Daten verwenden möchte, aber nichts hinzufügen möchte, braucht sie nicht. Er könnte einfach .svn löschen, würde aber beim Checkout noch viel Speicherplatz benötigen.

Antwort

2

Subversion ist das richtige Werkzeug für diesen Fall und es sollte keine Probleme bei der Verarbeitung von 200 GB Daten oder Ereignissen mit mehreren TBytes an Daten geben. Beachten Sie, dass Sie in der Frage kein "Problem" angegeben haben, mit Ausnahme von "Modifizieren verbieten". Es ist also nicht klar, um welche Probleme es sich handelt.

Um Änderungen zu verbieten, aber Ergänzungen zu erlauben (ich verstehe nicht wirklich, warum Sie danach fragen, nur weil Sie eine vollwertige Version verwenden, die die Änderungen selbst steuert), verwenden Sie path-based authorization und kombinieren Sie es mit a pre-commit hook script. Schreiben Sie das Hook-Skript selbst oder verwenden Sie das in Python geschriebene Hook-Skript svnperms.

Und vergessen Sie nicht, die Dokumentation zu lesen: SVNBook 1.8.

+0

Ich habe svn getestet, indem ich ein Repository mit 18G Testdaten erstellt habe. Das Repository erkennt offensichtlich doppelte Daten und hat nur 11G. Wenn ich einen Checkout mache, bekomme ich 36G, weil der Baum ein .svn-Verzeichnis mit Kopien aller Dateien enthält. du -hs * 18G original-testdaten/11G repository/ 36G test-daten-nach-checkout/ –

+1

@MarkusHeitz in so einem fall lauf 'svn export' als @ojblass vorgeschlagen. – bahrep

3

Um den zweiten Teil Ihrer Frage zu beantworten, können Sie einen SVN-Export durchführen, um nur eine Kopie Ihrer Daten zu erhalten. Sie können diesen Ordner nicht übernehmen, da es sich nicht um eine Arbeitskopie handelt. Ich habe ein Repository, das weit über 200 GB groß ist. Keine Probleme bisher.