Frage

Als lokale Subversion czar ich jedem nur erklären, Quellcode zu halten und nicht-große Textdateien im Repository, nicht riesig binäre Datendateien. Kleinere binäre Dateien, die Teile von Tests sind, vielleicht.

Leider arbeite ich mit Menschen ! Jemand wird wahrscheinlich einen Tag versehentlich eine 800MB binäre hulk zu begehen. Dies verlangsamt die Repository-Operationen.

Zuletzt habe ich geprüft, können Sie eine Datei nicht aus dem Repository löschen; macht es nur nicht von der letzten Revision teil. Das Repository hält das Monster für alle Ewigkeit, falls jemand jemals will den Zustand des Repository für dieses Datum oder Versionsnummer wieder zu verwenden.

Gibt es eine Möglichkeit, um wirklich die Monster-Datei zu löschen und mit einem recht großen Repository enden? Ich habe die svnadmin dump / load, was versucht, aber es war ein Schmerz.

War es hilfreich?

Lösung

Einige zusätzliche Informationen dazu finden Sie im Blog-Eintrag zu finden: Subversion Auslöschen, das fehlende Merkmal

Seien Sie sicher, auch durch die Kommentare zu lesen, wo Karl Fogel den Artikel relativiert: -)

Andere Tipps

Um dauerhaft Monster-Dateien von einer SVN-Repository zu löschen, gibt es keine andere Lösung als svnadmin dump / load verwenden. ( SVN Buch: Befehl dump )

große Dateien Um zu verhindern, begangen wird, kann ein Hook-Skript verwendet werden. Sie könnte zum Beispiel ein Skript, das „pre-commit“ lief, wenn jemand in das Repository zu begehen versucht. Das Skript könnte Dateigröße überprüfen, oder Dateityp, und lehnt die begehen, wenn sie eine oder mehr Dateien enthalten, die zu groß waren, oder eine „verbotene“ Art.

Weitere typische Anwendungen von Hook-Scripts zu überprüfen sind (pre-commit), dass eine Commit-Log-Nachrichten, oder (post-commit) Details per E-Mail von der Commit oder eine Website mit den neu verpflichtet, Dateien zu aktualisieren.

Ein Hook-Skript ist ein Skript, das auf dem Repository-Ereignisse als Antwort auf Antwort läuft ( SVN Buch:. erstellen Haken )

Wenn Sie es so bald fangen können, wie es begangen hat, ist die svnadmin dump / load Technik nicht zu schmerzhaft. Angenommen, jemand nur versehentlich gormundous-raw-image.psd begangen in Revision 3849. Sie können dies tun:

svnadmin dump /var/repos -r 1:3848 > ~/repos_dump

Das wäre eine Abbilddatei erstellen alles bis einschließlich Version enthält 3848. An diesem Punkt könnte man svnadmin erstellen und svnadmin load verwenden das Repository ohne die säumige wiederherzustellen begehen, wobei der Vorbehalt, dass alle Änderungen Sie innerhalb des Repositorys Verzeichnisstruktur - Haken, Symlinks, Berechtigungsänderungen, auth-Dateien, etc .-- müßte aus dem alten Verzeichnis kopiert werden. Hier ist ein Beispiel für den Rest der Sitzung bash Sie verwenden können um den Vorgang abzuschließen:

svnadmin create /var/repos-new
svnadmin load /var/repos-new < ~/repos_dump
cp -r /var/repos/conf /var/repos-new
cp -r /var/repos/hooks /var/repos-new
mv /var/repos{,-old} && mv /var/repos-new /var/repos

Ich bin sicher, dies wird mehr schmerzhaft die mehr Geschichte Repository hat, aber es funktioniert.

Wenn Sie die Datei von Ihrer HEAD Revision entfernt, ist es Ihnen nicht auf Betriebsgeschwindigkeit verlangsamen, wie ony Deltas zwischen den Revisionen behandelt werden. (Repository Sicherungen müssen natürlich die Last handhaben).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top