Sonntag, Dezember 15, 2019

Reparieren Sie beschädigte SVN-repository

Ich bin mit svnX (0.9.13) auf Mac OS X Lion (10.7.2 11C74) und haben, zu haben scheinen, was ich glaube, ist eine beschädigte SVN-repository. Ich habe gesucht, die Website, die für ähnliche Fragen und haben gefunden eine paar, aber keiner beschreiben, wie sich zu erholen, wenn Sie nicht abschließen können ein Kasse aus dem repository. Ich habe nicht eine aktuelle Arbeitsverzeichnis entweder.

Der genaue Fehler ist:

svn: Checksum mismatch while reading representation:

erwartet: [hash]

aktuell: [verschiedene hash]

Wenn die Warnung entlassen (option nur), die Kasse wird weiter bis zum Ende. Auf den ersten Blick, die meisten Dateien scheinen da zu sein, aber wenn ich die Anwendung ausführen, ist es klar, es ist ein Mischmasch von Versionen. Das repository lebt auf einem USB-flash-Laufwerk, das könnte eine Quelle der Korruption. Ich bin der einzige Benutzer, der Zugriff auf diese Dateien, und Sie haben nicht gewesen berührt seit über einer Woche und wurden in einem funktionsfähigen Zustand.

Irgendwelche Vorschläge, wie es weitergehen würde geschätzt.

  • Wiederherstellen aus backup? SVN speichert änderungen in einer effizienten Binär-diff-format, vermute ich, dass machen würde es sehr anfällig für Korruption… auf jeden Fall das erste, was Sie tun sollten, ist eine vollständige Kopie des repository und die arbeiten an der Wiederherstellung der Kopie.
  • USB-flash-Laufwerk? Ich hoffe, dass Sie regelmäßig sichern (es könnte sogar erhalten, die verloren gehen, wenn nicht beschädigt).
  • Wiederherstellung aus einer Sicherung möglich ist, aber ein paar commits verloren, so dass ich versucht bin zu tun, das nur als letzten Ausweg.
  • Ja, das Laufwerk ist gesichert, zusammen mit der Entwicklung von computer weekly, jedoch war ich ein bisschen im Urlaub, wenn ich konnte keine Verbindung zum backup-hardware. Ich denke, dies ist meine Buße.
  • Wenn Sie überprüft haben, Kopien, verlieren Sie möglicherweise einige der Geschichte, aber Sie verlieren nicht die letzten änderungen (Sie können sofort überprüfen, die in Ihrem letzten Exemplare). Auch, wenn ich das google, dass “ svn: Checksum mismatch…‘ Fehlermeldung, bekomme ich mehrere Gespräche über das beheben von it—haben Sie versucht, eine davon? Was bedeutet svnadmin verify sagen?
  • Ihre einzige Hoffnung ist es zu tun, ein svnadmin dump und load und sehen, ob das hilft, kümmern sich um das Problem der Korruption.
  • Ich habe nur versucht, ’svnadmin dump“ und es hielt auch kurz die aktuelle revision mit der Fehlermeldung „corrupt node-revision“ und „fehlende Feld-id in Knoten-rev“.
  • Ja, ich habe versucht, zwei möglich – Lösungen vor der Buchung. Ich denke, die beste Lösung nun ist das erstellen eines neuen repository mit meiner aktuellen Version und verlieren die Geschichte.
  • In svnadmin dump können Sie eine revision range über die -r parameter. Versuchen Sie das überspringen der schlecht überarbeitung und sehen, ob das hilft. Wenn Sie über eine Sicherung verfügen, können Sie vielleicht haben Sie eine Sicherung von der Sicherung, dann starten Sie den dump der aktuellen zu der revision nach Ihrer Sicherung an. Dann kombinieren Sie die beiden und sehen, was passiert. Es gibt nicht viel, was Sie tun können. Es ist wie das, was passiert, wenn Ihre Festplatte abstürzt. Sie versuchen zu retten, was Sie können und das beste hoffen.
  • Mit mehreren svnadmin dump reicht, ich war in der Lage zu erhalten, die Geschichte und die aktuelle revision. Bitte eine Antwort posten, so kann ich den thread schließen. Danke!

InformationsquelleAutor Noren | 2012-01-12

2 Kommentare

  1. 16

    Wenn Sie einem korrupten repository, Ihre einzige echte chance in der Speicherung der Informationen ist ein dump und load. Wenn Sie Glück haben, macht einen dump und load wird manchmal richtig die Korruption.

    Wenn nicht, können Sie die -r <from>:<to> parameter auf die Müllkippe zu überspringen, die schlechte Revisionen. Sie erstellen können mehrere dump-Dateien und verschmelzen Sie in einem einzigen repository, so können Sie überspringen die schlechte revision zahlen. Ich habe bemerkt, dass jeder dump-Datei beginnt mit einer kompletten revision im repository an, die revision und die dump/load-Prozess ist in der Regel intelligent genug, nicht auf double-up-änderungen.

    In der Tat, ich glaube, Sie können sogar mehrere dumps in eine einzige dump-Datei, ohne zu viele Probleme. Im folgenden soll überspringen Revisionen 1001 und 1204 die schlechte Revisionen:

    $ svnadmin dump -r1:1000 my_repos > dumpfile.txt
    $ svnadmin dump --incremental -r1002:1203 my_repos >> dumpfile.txt
    $ svnadmin dump --incremental -r1205:HEAD my_repos >> dumpfile.txt
    $ svnadmin load my_repos2 < dumpfile.txt
    

    Gibt es mehrere Subversion backup-Skripts für das backup-repository von unter-dumps der neuesten Revisionen. Zum Beispiel, wenn Sie das erste mal ausführen, es sichert alles, von der ersten überarbeitung nach der letzten version (sprich revision 1000). Dann, am nächsten Tag dumps revision 1001 der letzten revision (sagen 1003), und am nächsten Tag, revision 1004 der letzten revision.

    Wiederherstellen, müssen Sie zum wiederherstellen aller Deponien, aber die backup-Zeiten sind wohl kürzer sein, als bei einem vollständigen dump jedes mal.

    Können Sie auch tun, eine hotcopy, aber ich finde nicht tun, eine hotcopy, die viel schneller als ein dump, und es könnte sein, Themen wenn Sie bewegen Sie Ihr repository auf einem anderen Rechner.

    • In der oben beschriebenen Weise arbeitete für mich, mit einer Ausnahme: ich musste die „–incremental“ – Schalter für svnadmin, um sicherzustellen, dass die Pfade korrekt sind.
    • Sie sir, nur mich gerettet :-). Ich musste nur dump Revisionen eins nach dem anderen, weil der KOPF zu sein schien, nicht erkannt oder zumindest dump produziert weired Fehler.
    • manchmal Eigenschaften, die beschädigt sind, dann verwenden Sie –bypas-prop-validation-option in svnadmin load-Befehl .
    • und wenn ich ein Fehler beim laden von: „* Bearbeite Pfad … svnadmin: E160013: Datei nicht gefunden: Transaktion „2-2′, Weg …“? mein problem ist mit einigen früheren revision (die 3 und die 5, jetzt bin ich bei 65)…
  2. 4

    Sollten Sie eine dump und load als David W. vorgeschlagen. Allerdings gibt es einige Fallstricke, die ich gestoßen und ich möchte nach einer kompletten Lösung.

    Korruption tritt in der Regel in einzelne Dateien auf einige änderungen. Wir brauchen nicht zu verwerfen, eine ganze revision nur, weil einige-Datei hatte eine Prüfsumme überein.

    Zuerst werden wir versuchen das deaktivieren der checksum-Berechnung, durch das entfernen von Linien-matching – Text-content-md5

    svnadmin dump my_repo | sed '/^Text-content-md5/d' | svnadmin load second_repo
    

    Den inkrementellen Ansatz ermöglicht es uns, Fehler zu beheben und weiterhin unsere Fortschritte. Wenn ein Fehler passiert, während der dump-und load, sich für die letzten --- Committed revision X >>> --- Nachricht und lege X+1 als Ausgangspunkt der revision als parameter -r und versuchen Sie es erneut. Das spart viel Zeit.

    svnadmin dump --incremental -r1:100000 my_repo | sed '/^Text-content-md5/d' | svnadmin load second_repo
    

    Oder laden Sie einfach aus dem dumpfile:

    sed '/^Text-content-md5/d' dumpfile.txt | svnadmin load second_repo
    

    Wenn das nicht genug war, und du bist immer ‚Vorzeitiges Ende, der content-Daten in dumpstream“ Fehler oder ähnliches, sollten Sie ausschließen, dass die Datei vollständig aus dem dump von svndumpfilter:

    svnadmin dump --incremental -r1:100000 my_repo | svndumpfilter exclude myproject/lib/thirdparty-all.jar | sed '/^Text-content-md5/d' | svnadmin load second_repo
    

    Den Befehl oben schließt myproject/lib/thirdparty-all.jar – Datei aus dem dump.

    Zusätzliche Informationen:

    • Könnte man anfügen --bypass-prop-validation zu svnadmin load Befehl. Dies funktioniert, wenn die Korruption ist gering.
    • Fix Dump stream contains a malformed header (with no ':')
      Fehler mit Anhängen

      | grep --binary-files=text -v '^* Dumped revision'

      der pipe-Kette (vor svnadmin load).

    Hoffe, dieser Beitrag ist nützlich für einige Menschen.

Kostenlose Online-Tests

Letzte Fragen

Tun ItemView löst Blase?

Ich habe eine CompositeView für eine Tabelle. Ich habe Trigger-set in der Kind-ItemView für jede Zeile... var TableRow = Marionette.ItemView.extend({ tagName:...

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client: AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int...

Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen...

Actionscript-Objekt, das verschiedene Eigenschaften

Wie kann ich die Anzahl der Eigenschaften in einer generischen Actionscript-Objekt? (Wie die Array-Länge) InformationsquelleAutor Fragsworth | 2011-01-15

Wie plot mehrere Graphen und nutzen Sie die Navigations-Taste im [matplotlib]

Die neueste version von matplotlib erstellt automatisch Navigations-buttons unter den graph. Aber die Beispiele, die ich finden alles im Internet zeigen, wie erstellen Sie...