webentwicklung-frage-antwort-db.com.de

Git Apply überspringt Patches

Ich versuche, einen Patch anzuwenden, der Binärdateien mit git apply enthält, aber nur die Dateien werden hinzugefügt. Ich habe versucht, git apply failing.patch -v auszuführen und es druckt etwas wie:

Übersprungener Patch 'file.txt'.
Patch file.bin wird geprüft ...
Patch file.bin sauber angewendet.

Wie kann ich herausfinden, was der Grund für das Überspringen ist? Da die aktuelle Nachricht nicht sehr aufschlussreich ist.

12
Iulian Onofrei

Ich habe das Problem herausgefunden, indem ich patch -p1 < failing.patch ausgeführt habe.

datei kann nicht an der Eingabezeile 5 gepatcht werden

und erinnerte mich daran, dass ich mich nicht im Stammverzeichnis befand.

Ich kann nicht verstehen, warum niemand hatte das vorher gefragt und warum ist die ausführliche Nachricht nicht ausführlich.

Auch nicht in der offiziellen Dokumentation werden Überspringen und mögliche Ursachen erwähnt.

17
Iulian Onofrei

Dieses Problem muss auftreten, während versucht wird, Änderungen in Projekte zu portieren. git apply scheint alle Verzeichnisnamen in den Patch-Dateipfaden zu ignorieren, und es lehnt die Anwendung ab, wenn die Indexzeile nicht mit einem Dateihash im Ziel-Repository übereinstimmt. Ich hatte besseren Erfolg mit diesen Optionen (wovon --no-index undokumentiert scheint):

git apply --verbose --no-index --directory {subdir} {patch-file} 
2
Ed Randall

Habe das gleiche Problem. In meinem Fall war die Fehlerquelle .git Ordner in einigen übergeordneten Verzeichnissen des Patch-Ziels. Die Lösung bestand darin, das Patch-Ziel außerhalb dieses übergeordneten Verzeichnisses zu verschieben.

0
Alexander