簡體   English   中英

無法在Solaris上應用統一的diff補丁

[英]Can't apply unified diff patch on Solaris

例如,如果我有兩個文件:

文件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

然后,如果我嘗試在Solaris上使用patch命令應用此補丁:

patch -u -i files.patch

它掛在:

 Looks like a unified context diff.
File to patch:

1.有沒有辦法將Solaris 本機補丁命令與統一差異一起使用?

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

會很完美。

對於我的問題的第二部分,請參閱下面接受的答案。

在Solaris /usr/bin/patch是符合某些古老標准所需的舊版本。 在Solaris 8及更高版本中,現有版本的GNU補丁作為/usr/bin/gpatch提供。

diff -cr old.new new.txt > patch.txt

gpatch -p0 < patch.txt

適合我(使用gpatch)

單個Unix v2和v3都支持上下文差異但不支持統一差異,因此為了更好的可移植性,您應該使用上下文差異( -c選項來diffpatch )。

在較舊的Solaris發行版(我認為10之前)中,您需要確保/usr/xpg4/bin /usr/bin位於$PATH /usr/bin之前,否則您可能會獲得某些實用程序的兼容版本而不是標准實用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM