Subversion-Historie um Dateien bereinigen

2011-11-09

Es kann schon mal vorkommen, dass man versehentlich eine Datei in Subversion eincheckt, die dort einfach nichts verloren hat – zum Beispiel eine Konfigurationsdatei mit Zugangsdaten. Hier kommt man mit dem logischem Löschen anhand des Kommandos svn rm file nicht wirklich weiter, da die Datei in der Historie verbleibt und so für andere weiterhin abrufbar ist. In diesem Fall hilft nur das Exportieren, Filtern und neue Aufsetzen des Subversion-Repositories, wie in den folgenden Schritten beschrieben wird.

Im ersten Schritt wird ein Dump vom bestehenden Repository erstellt.

svnadmin dump /var/svn > svn-repo-dump

Im Anschluss wird der Dump um die gegebenen Dateien, welche nicht mehr in der Historie geführt werden sollen, gefiltert.

svndumpfilter exclude path/to/pwd-file \
                      path/to-another/file \
                      < svn-repo-dump \
                      > svn-repo-dump-filtered

Dann ist das bestehende Repository zu sichern und ein neues unter dem gleichen Pfad anzulegen.

mv /var/svn /var/svn.backup
svnadmin create /var/svn

Zum Schluss wird dann noch der gefilterte Dump in das neu angelegte Repository eingespielt. Fertig.

svnadmin load --force-uuid /var/svn < svn-repo-dump-filtered