Frage

Ich habe Probleme, einen Patch zu meinem Quellbaum anwenden, und es ist nicht die übliche -p Strippen Problem. patch ist in der Lage, die Datei zu finden, patchen.

Insbesondere meine Frage ist, wie die .rej Dateien patch erstellt lesen / interpretieren, wenn es auf ein paar großen Stücke ausfällt. Die meisten Diskussionen von patch / diff Ich habe nicht gesehen, beinhalten.

War es hilfreich?

Lösung

Ein einfaches Beispiel:

$ echo -e "line 1\nline 2\nline 3" > a
$ sed -e 's/2/b/' <a >b
$ sed -e 's/2/c/' <a >c
$ diff a b > ab.diff
$ patch c < ab.diff
$ cat c.rej
***************
*** 2
- line 2
--- 2 -----
+ line b

Wie Sie sehen können: Die alte Datei enthält Zeile 2 und die neue Datei sollte enthalten Linie b. Sie enthält jedoch tatsächlich Linie c (das ist nicht sichtbar in der Datei ablehnen).

In der Tat, der einfachste Weg, um solche Probleme zu lösen, ist das Diff-Fragment aus der .diff / .patch Datei zu nehmen, legen Sie sie an der entsprechenden Stelle in der Datei gepatcht wird und dann den Code von Hand zu vergleichen, um herauszufinden, , welche Linien den Konflikt tatsächlich verursachen.

oder - alternativ:. Die Originaldatei (unmodifiziert) Get, patchen und führt eine Dreiweg auf der Datei zusammenführen

Andere Tipps

Wiggle ein großes Werkzeug ist, um Dateien für die Anwendung .rej wenn Patch nicht erfolgreich ist.

Ich bin kein Experte mit Patch-Dateien auf den Umgang, aber ich möchte einige Klarheit über hinzufügen, wie sie von der Basis der Informationen auf meinem Verständnis zu lesen, die sie enthalten.

Ihre .rej Dateien werden Ihnen sagen:

  • der Unterschied zwischen dem Original und der .rej Datei;
  • , wo das Problem Code in der ursprünglichen Datei gestartet wird, wie viele Zeilen, es geht weiter für in dieser Datei;
  • und wo der Code beginnt in der neuen Datei, und wie viele Zeilen es geht weiter in dieser Datei.

So Diese Nachricht gegeben, am Anfang meiner .rej Datei festgestellt:

diff a/www/js/app.js b/www/js/app.js (rejected hunks) @@ -4,12 +4,24 @@

Ich sehe, dass für mein Problem Datei (www/js/app), die Differenz zwischen dem ursprünglichen (als a/www/js/app.js in der ersten Zeile angegeben) und die .rej-Datei (wie b/www/js/ angegeben) beginnt in Zeile 4 des Originals und geht für 12 Linien (der Teil vor dem Komma in @@ -4,12, +4,24 @@ auf Linie zwei) und 4 der neuen Version der Datei auf Zeile beginnt und für 24 Linien auf (den Teil nach dem Komma in @@ -4,12, +4,24 @@.

siehe

Für weitere Informationen, die ausgezeichnete Übersicht über Patch-Dateien (mit den Informationen, die ich oben beachten, sowie Angaben über die Leitungen hinzugefügt und / oder zwischen Dateiversionen) unter http://blog.humphd.org/vocamus-906/ .

Korrekturen oder Präzisierungen begrüßen natürlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top