Svn is tolll, aber was wenn man ausversehen ein bin File comitted hat was da nicht rein gehört…

Kategorien: IT

die Frage habe ich mir heute gestellt.

Hier ist das Szenario, in der Rev 23 und Rev 42 wurde z.B. je ein bin file mit dem gleichen Namen comitted. Nun hat man da womöglich nicht nur 2-3MB sondern gleich mehrere hundert MB oder gar GB verschwendet.

HowTo clean your SVN from unwanted files.

1.) Zuerst wird ein Backup/Dump von dem SVN gezogen.
svnadmin dump /var/svn/$svnname > /zielverzeichnis/$svnname_dump

2.) Dann erstellen wir eine Liste mit allen Dateinamen die in dem Repo vorkommen
svn list --username $username https://url.tld/svn/$svnname -R | grep $dateiname_der_gelöscht_werden_soll > filterliste

3.) Nun wird der svndumpfilter mit der zu suchenden Datei (inkl. dem Pfad) versorgt.
svndumpfilter exclude trunk/pfad/$zu_löschende_datei < $svnname.dump > new_svn_dump

Alternativ kann man auch eine Liste mit unerwünschten FileNames angeben
svndumpfilter exclude --targets trunk/pfad/$zu_löschende_dateien_liste < $svnname.dump > new_svn_dump

4.) Dies kann je nach dem wie groß das SVN ist, etwas dauern.

5.) Nun wird das neue SVN Dump file wieder in das SVN Repo eingespielt. Dazu muss vorher das alte SVN gelöscht werden
rm -rf /var/svn/$svnname

6.) Jetzt wird das gleiche SVN wieder neu angelegt mit
svnadmin create /var/svn/$svnname

7.) Nun kann der neu erstellte Dump wieder in das SVN zurück gespielt werden.
svnadmin load /var/svn/$svnname/ < /pfad/new_svn_dump

Während dem ganzen hin und her sollte man ggf den Apachen stoppen um nicht womöglich ein comit zu bekommen oder irgendeinen crash.

Have Fun.

«
»

    Schreibe einen Kommentar

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.