git svn rebase: Unvollständige Daten: Delta-Quelle wurde unerwartet beendet
Lesezeit: 6 Minuten
ich habe gewartet der Git-Spiegel von das Wasserprojekt. Vor einigen Wochen hatten wir jemanden, der bereit war, seinen ersten git-basierten Patch einzureichen. Leider sind wir aufgrund der Multiplattform-Natur des Projekts auf einige Probleme bezüglich der Zeilenenden (CRLF vs. LF usw.) gestoßen.
Ich habe versucht, was ich einstellen konnte die autocrlf-Option (zu ‘Eingabe’) und einige –hard-Resets durchführen. Ein paar Tage später gibt das tägliche Update (git svn rebase) jedoch diesen Fehler aus:
Incomplete data: Delta source ended unexpectedly
Ich habe versucht zu googeln, was zu tun ist, aber selbst das Entfernen der autocrlf-Einstellung in der .git/config hat nicht geholfen. Ich befürchte, dass die Arbeitskopie beschädigt ist, hoffe aber, dass sie nicht wiederhergestellt werden kann.
Natürlich ist eine mögliche Vorgehensweise, einfach von svn neu zu importieren und einen neuen Mirror zu starten, aber ich hoffe, wir müssen das nicht tun, da der aktuelle Watir-Mirror bereits gegabelt wurde und die Leute neuen Code entwickelt haben in ihren Gabeln.
Danke im Voraus für jede Hilfe.
bist du mit diesem problem weiter gekommen? wir scheinen derzeit das gleiche Problem zu haben. (und eine git-svn-Kaufabwicklung hat beim letzten Mal 3 Tage gedauert, also hoffe ich, dass ich das vermeiden kann)
– pvgoddijn
25. November ’09 um 8:42
@pvgoddijn Nein, sorry, es wurde nie eine Lösung gefunden. Das Problem ist einfach weg, weil sie offiziell zu Github gewechselt sind und svn aufgegeben haben.
– Pistos
30. November ’09 um 18:18
Todd Wagner
Ich hatte das gleiche Problem beim Versuch, ein Git-Repository aus dem brlcad svn-Repository zu erstellen. Ich habe es gelöst, indem ich getan habe git svn reset --r XXXXX, wobei ich XXXXX auf etwa 50 Revisionen vor der Revision gesetzt habe, die ursprünglich den Fehler erzeugte.
Beim Zurücksetzen einer einzelnen Revision konnte der Fehler nicht behoben werden. Als Teil des Prozesses habe ich Fehler von git erhalten, dass HEAD nicht definiert wurde. Um dies zu beheben, habe ich a git svn find-rev XXXXX um den Hash zu bestimmen, der der gewünschten Revision entspricht, dann git checkout. Danach waren die Fehler über HEAD weg und die git svn reset -r XXXXX hat funktioniert.
Vielen Dank. Dies hilft bei einem ähnlichen Problem. Ich habe nur die Revisionsnummer auf eine Revision vor der aktuellen Revision gesetzt.
– Lei
24. Februar ’11 um 18:47
Dies half, aber kurz nachdem ich alle Zombie-Git/Perl-Prozesse beendet und die Datei index.lock gelöscht hatte. Siehe meine Antwort hier: stackoverflow.com/questions/21334923/…
– boskicthebrain
14. Juli ’15 um 11:42
Aus eigener Erfahrung generiert git-svn beim Klonen oder Abrufen aus einem svn-Repository mit denselben Parametern immer genau die gleichen Commits (versuchen Sie es: Erstellen Sie ein Dummy-Repository, klonen Sie es mit git-svn, machen Sie weitere Commits, klonen Sie es erneut, und holen Sie die erste Kopie ab; die resultierenden Commits sollten genau den gleichen Hash haben).
Dies bietet Ihnen eine interessante Option: Sie können einen separaten neuen Spiegel mit denselben Parametern starten und beide vergleichen, um zu sehen, wo sie divergieren (oder wenn sie überhaupt divergieren; vergleichen Sie unbedingt die Hashes, da sie wichtig sind). Wenn sie gleich sind (oder Sie entscheiden, dass die Commits, nachdem sie divergieren, keine Rolle spielen), können Sie den neuen Spiegel verwenden, ohne die Forks zu brechen (oder weniger von ihnen zu brechen, wenn Sie sich entschieden haben, einige divergierende Commits zu ignorieren).
Der Hash bleibt gleich, oder? Nun, ich hätte wissen müssen/erinnern, dass git die tatsächlichen Bytes des Commit-Delta hasht. Leider kann es vorkommen, dass ich auf Differenzen stoße, weil ich das CRLF <-> LF-Problem beim zweiten Mal überwinden möchte. Ich werde es aber mit einem erneuten Import versuchen. Danke!
– Pistos
17. Okt. 08 um 4:26 Uhr
Okay, CesarB, ich habe versucht, von der svn-Quelle neu zu importieren, indem ich ein git svn init durchführe, autocrlf auf input setze und dann git svn fetch – aber ich erhalte genau den gleichen Fehler (“delta source …”) mitten in das holen. Irgendwelche anderen Vorschläge?
– Pistos
18. Okt. 08 um 4:58 Uhr
Versuchen Sie es, ohne mit autocrlf zu spielen, wie bei Ihrem ursprünglichen Spiegel. Wenn dieser Fehler weiterhin auftritt, würde ich vermuten, dass entweder svn oder git-svn defekt ist.
– CesarB
18. Okt. 08 um 5:35 Uhr
Nun, ohne die crlf-Einstellungen funktionieren die Dinge gut, aber die Zusammenführungen geraten in Panik wegen der Unterschiede beim Zeilenende und zeigen große Unterschiede, obwohl das einzige Delta mit Leerzeichen zu tun hat. Ich habe auch Whitespace = cr-at-eol ausprobiert, aber das scheint in dieser Hinsicht nicht zu helfen.
– Pistos
24. Okt. 08 um 3:08 Uhr
Wie auch immer, dies könnte ein aufgegebenes Problem sein, da das Watir-Projekt Berichten zufolge vor Jahresende vollständig auf Git umgestellt wird. Danke trotzdem für deinen Input.
– Pistos
24. Okt. 08 um 3:09 Uhr
Ich hatte das gleiche Problem mit git svn fetch, aber der Reset-Ansatz hat bei mir nicht funktioniert, vielleicht weil ich nicht wirklich weiß, wann die Beschädigung aufgetreten ist. Hier ist, was bei mir endlich funktioniert hat. Ich habe ein git svn fetch --ignore-paths="/branches/" die ohne Fehler lief. Danach habe ich noch einmal meine git svn fetch, und diesmal hat es funktioniert.
Reset-Ansatz hat bei mir auch nicht funktioniert. Aber ich möchte Zweige nicht ignorieren. Was sollte ich tun?
– anonym
30. November ’13 um 13:22
@anony Sie ignorieren nur Branches beim ersten Befehl, und wenn Sie das zweite Mal ausführen, ignorieren Sie Branches nicht und es werden die Änderungen ausgewählt.
– Don Branson
30. November ’13 um 14:16
Hallo Don, das hat bei mir nicht funktioniert. Die folgende Fehlermeldung erhalte ich: Unvollständige Daten: Delta Source endete unerwartet bei /usr/lib/perl5/site_perl/Git/SVN/Ra.pm line 282
– anonym
1. Dez. ’13 um 11:33
@anony – Okay, das bedeutet nur, dass der Teil, den Sie ignorieren (dh /branches/), nicht breit genug ist. Es gibt eine Beschädigung in Ihrem svn-Repository, aber anscheinend nicht unter /branches. Möglicherweise müssen Sie sich auf Versuch und Irrtum verlassen, um herauszufinden, wo es ist.
– Don Branson
1. Dez. ’13 um 21:07
Ich hatte das gleiche Problem und wie bei Todd wurde das Problem durch eine vorherige Revision behoben.
Ich denke, die Lösung besteht darin, zu zwei Schritten vor der Revision der problematischen Datei zu gehen.
Ich habe ein ähnliches Problem gesehen. Es tritt auf, wenn ich einen teilweisen Klon eines SVN-Repos mache. Ich vermute, git-svn kann die ursprüngliche Quelle der Datei bei einem dcommit nicht finden. Ich habe es behoben, indem ich sichergestellt habe, dass ich vollständig auf dem neuesten Stand bin (git svn rebase) und dann git svn set-tree verwendet habe, um bestimmte Änderungen an Subversion vorzunehmen. Wenn Sie viele Änderungen festschreiben müssen, kann dies mühsam sein, da Sie jede Änderung der Reihe nach manuell festschreiben müssen, aber es funktioniert gut, wenn Sie nur ein oder zwei Festschreibungen übertragen müssen.
.
3552200cookie-checkgit svn rebase: Unvollständige Daten: Delta-Quelle wurde unerwartet beendetyes
bist du mit diesem problem weiter gekommen? wir scheinen derzeit das gleiche Problem zu haben. (und eine git-svn-Kaufabwicklung hat beim letzten Mal 3 Tage gedauert, also hoffe ich, dass ich das vermeiden kann)
– pvgoddijn
25. November ’09 um 8:42
@pvgoddijn Nein, sorry, es wurde nie eine Lösung gefunden. Das Problem ist einfach weg, weil sie offiziell zu Github gewechselt sind und svn aufgegeben haben.
– Pistos
30. November ’09 um 18:18