例如,如果我有两个文件:

文件1:

This is file 1

和file2:
This is file 2

并使用以下命令创建补丁:
diff -u file1 file2 > files.patch

结果是:
--- 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

然后,如果我尝试使用patch命令在Solaris上应用此补丁:
patch -u -i files.patch

它卡在:
 Looks like a unified context diff.
File to patch:

1.是否可以将Solaris native 补丁命令与统一的差异一起使用?

2.如果无法应用统一格式,哪种差异格式被认为是最可移植的?

更新:
我已经在问题的第一部分找到了答案。如果第二个文件(在这种情况下为file2)与第一个文件(file1)位于同一文件夹中,则Solaris上的patch似乎挂起。例如,以下相当常见的差异:
--- 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

不适用于非常常见的patch命令:
patch -p1 -u -d a < file.patch

而以下差异(注意第二个文件已重命名为):
--- 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

会完美地工作。

对于我的问题的第二部分,请参见下面的接受的答案。

最佳答案

单个Unix v2和v3都支持上下文差异,但不支持统一差异,因此,为了获得更好的可移植性,您应该使用上下文差异(-cdiffpatch选项)。

在较早的Solaris发行版(我认为是10之前的版本)上,您需要确保/usr/xpg4/bin中的/usr/bin$PATH之前,否则您可能会获得某些实用程序的兼容版本,而不是标准实用程序的兼容版本。

关于diff - 无法在Solaris上应用统一的diff补丁,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3477580/

10-16 11:06