Zum Beispiel, wenn ich zwei Dateien:Kann nicht Standard-Diff-Patch auf Solaris anwenden
file1:
This is file 1
und file2:
This is file 2
und erstellen Patch mit der folgenden Befehl:
diff -u file1 file2 > files.patch
Ergebnis ist:
--- file1 Fri Aug 13 17:53:28 2010
+++ file2 Fri Aug 13 17:53:38 2010
@@ -1,1 +1,1 @@
-This is file 1
+This is file 2
Dann, wenn ich versuche, diesen Patch auf Solaris mit Patch Befehl anwenden:
patch -u -i files.patch
es hängt an:
Looks like a unified context diff.
File to patch:
1. Gibt es eine Möglichkeit Solaris zu verwenden nativer Patch-Befehl mit vereinheitlichten Diffs?
2. Welches Vergleichsformat gilt als am tragbarsten, wenn es nicht möglich ist, ein einheitliches Format anzuwenden?
Update: ich Antwort auf den ersten Teil meiner Frage gefunden habe. Scheint, dass patch
auf Solaris hängt, wenn die zweite Datei (Datei2 in diesem Fall) in dem gleichen Ordner wie der erste (Datei1) existiert. Zum Beispiel des folgenden ziemlich allgemein diff:
--- a/src/file.src Sat Aug 14 23:07:29 2010
+++ b/src/file.src Sat Aug 14 23:07:37 2010
@@ -1,2 +1,1 @@
-1
-
+2
nicht mit recht häufig Patch Befehl arbeiten:
patch -p1 -u -d a < file.patch
während der folgenden diff (note zweite Datei umbenannt wird):
--- a/src/file.src Sat Aug 14 23:07:29 2010
+++ b/src/file_new.src Sat Aug 14 23:07:37 2010
@@ -1,2 +1,1 @@
-1
-
+2
wird perfekt funktionieren.
Für den zweiten Teil meiner Frage siehe akzeptierte Antwort unten.
Danke, Gilles für Erklärungen. Ich werde in Betracht ziehen, Kontext-Diffs zu verwenden. Soweit ich verstehe, können Sie nicht im Kontext diff Patch-Informationen über die Quelldatei zu ändern. Habe ich recht? Es ist nicht sehr praktisch ... Wie auch immer, ich kann immer noch nicht verstehen, warum ich es versäumt habe, den Patch -u mit diff zu starten, das von diff -u erzeugt wurde. – Shcheklein
@Shcheklein: Was meinst du mit "Patch Informationen über Quelldatei zu ändern"? Kontext-Diffs enthalten Dateinamen. POSIX benötigt 'diff -cr' um unterstützt zu werden, das muss funktionieren. Übrigens, macht "Patch-p0" einen Unterschied? – Gilles
Ja, Kontext-Diffs enthalten genügend Informationen. Das Problem mit Solaris "Patch" war jedoch das andere (siehe Update der Frage). '-p0' macht keinen Unterschied. Scheint, dass "Patch" auf Solaris nicht gefällt, wenn beide Namen in Hunk gleich sind oder beide Dateien existieren. – Shcheklein