2010-07-19 1 views
14

Ich hatte vor kurzem ein beschädigtes Objekt in meinem Repository, auf meinem Kopf (das Objekt war leer). Es ist passiert, nachdem ein Befehl git-svn unterbrochen wurde. Dann habe ich mein Repository wiederhergestellt, indem ich die Referenzen für dieses Objekt manuell änderte.git-svn Fetch/Rebase fehlgeschlagen nach dem Versuch, eine beschädigte Datei zu reparieren

Nun, ich möchte, dass meine git-Repository mit SVN synchronisieren, aber git svn kehrt holen:

fatal: Invalid revision range 5a5dc92cd3083960fb4828ae387a32cda0554fa8..refs/remotes/a-branch 
rev-list --pretty=raw --no-color --reverse 5a5dc92cd3083960fb4828ae387a32cda0554fa8..refs/remotes/a-branch --: command returned error: 128 

5a5dc92cd3083960fb4828ae387a32cda0554fa8 auf das beschädigte Objekt verweist, ich möchte sagen-git svn dieses Objekt nicht zu berücksichtigen, sondern ein anderer, aber ich weiß nicht, wie ich das hacken soll.

Wenn jemand weiß, wo/wie git-svn diesen Wert intern speichert, wäre es großartig.

Danke

Antwort

17

wenn Sie Metadaten mit Ihren Commit-Nachrichten (die http://svn.…./svn/[email protected] (<id>)) gespeichert svn haben, können Sie die .rev_map.<id> Dateien aus den .git/svn/… Verzeichnisse löschen.

git-svn erstellt sie dann neu, bevor der nächste Befehl ausgeführt wird.

Edit: Wenn git gc laufen, wenn Sie Ausgang entlang der Linien sehen:

$ git gc 
warning: reflog of 'HEAD' references pruned commits 
warning: reflog of 'refs/heads/master' references pruned commits 
warning: reflog of 'refs/remotes/trunk' references pruned commits 

Dann wissen Sie, dass Sie die oben genannten Trick ausführen müssen. In diesem Fall:

rm .git/svn/refs/remotes/trunk/.rev_map.* 
+0

habe ich die Antwort bearbeitet, um es deutlicher zu machen, dass die im rev_map aus der vorherige Referenz kommt, da ich arbeitete heraus, was von einer anderen Referenz im Web benötigt wurde. –