标签: unified-diff

如何打印统一diff格式的两个多行字符串的比较?

你知道任何有助于这样做的图书馆吗?

我会编写一个函数,以统一的diff格式打印两个多行字符串之间的差异.像这样的东西:

def print_differences(string1, string2):
    """
    Prints the comparison of string1 to string2 as unified diff format.
    """
    ???
Run Code Online (Sandbox Code Playgroud)

用法示例如下:

string1="""
Usage: trash-empty [days]

Purge trashed files.

Options:
  --version   show program's version number and exit
  -h, --help  show this help message and exit
"""

string2="""
Usage: trash-empty [days]

Empty the trash can.

Options:
  --version   show program's version number and exit
  -h, --help  show this help message and exit

Report bugs to http://code.google.com/p/trash-cli/issues
"""

print_differences(string1, string2)
Run Code Online (Sandbox Code Playgroud)

这应该打印出类似的东西:

--- string1 
+++ string2 …
Run Code Online (Sandbox Code Playgroud)

python diff unified-diff

20
推荐指数
2
解决办法
2万
查看次数

从kdiff3文件比较,我可以生成统一diff格式的diff吗?

我在Windows中有一个kdiff3比较,我想将比较保存为统一diff格式的文本文件.

我意识到这是一个奇怪的问题.通常,人们已经掌握了文本差异,并希望在kdiff3中以图形方式查看.

我在Windows中使用了...... 不寻常的 ......版本控制工具,它可以比较版本并在kdiff3中显示比较.但是,在生成的Unix友好的输出,至少对非ClearCase的,忍者像我决然不友好.

我真正真正喜欢的是以统一的diff格式获得比较的输出,所以我可以使用类似patch或类似的工具.我并不特别喜欢ClearCase,我很乐意尽可能地让它独自一人.

kdiff3可以采用现有的比较并将其导出为统一的差异格式吗?

diff unified-diff kdiff3

17
推荐指数
1
解决办法
8245
查看次数

为什么Python中difflib库中的unified_diff方法会遗漏一些字符?

我正在尝试检查线路之间的差异。这是我的代码:

from difflib import unified_diff

s1 = ['a', 'b', 'c', 'd', 'e', 'f']
s2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'i', 'k', 'l', 'm', 'n']

for line in unified_diff(s1, s2):
    print line
Run Code Online (Sandbox Code Playgroud)

它打印:

---
+++ 

@@ -4,3 +4,9 @@

 d
 e
 f
+g
+i
+k
+l
+m
+n
Run Code Online (Sandbox Code Playgroud)

“a”、“b”和“c”发生了什么?谢谢!

python unified-diff difflib

6
推荐指数
1
解决办法
6122
查看次数

无法在Solaris上应用统一的diff补丁

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

文件1:

This is file 1
Run Code Online (Sandbox Code Playgroud)

和file2:

This is file 2
Run Code Online (Sandbox Code Playgroud)

并使用以下命令创建补丁:

diff -u file1 file2 > files.patch
Run Code Online (Sandbox Code Playgroud)

结果是:

--- 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
Run Code Online (Sandbox Code Playgroud)

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

patch -u -i files.patch
Run Code Online (Sandbox Code Playgroud)

它挂在:

 Looks like a unified context diff.
File to patch:
Run Code Online (Sandbox Code Playgroud)

1.有没有办法将Solaris 本机补丁命令与统一差异一起使用?

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

更新: 我在问题的第一部分找到了答案.patch如果第二个文件(在这种情况下为file2)与第一个文件(file1)存在于同一文件夹中,那么Solaris上似乎会挂起.例如,以下相当常见的差异:

--- a/src/file.src       Sat Aug 14 23:07:29 2010
+++ b/src/file.src       Sat Aug 14 …
Run Code Online (Sandbox Code Playgroud)

diff patch solaris unified-diff

5
推荐指数
2
解决办法
5545
查看次数

为什么GNU补丁失败了?

天儿真好,

编辑:我想提一下,这个有点长的问题现在已经解决了,感谢Adam Goode在下面的回答,如果你只是在经过时略读.

我已经获得了一个补丁添加到Apache 2.2.14,并且一个统一的差异根本没有修补文件.我正在使用GNU补丁2.5.4.

我必须忽略空格,因为原始补丁不能很好地完成,即许多差异似乎是用于制表符 - >空格转换.这些差异甚至不太有用,因为补丁文件已经在交付链的某处修改过,例如svn repository,Jira system,web interface等,所以所有选项卡都已转换为空格了!

我在Solaris 10上使用的命令是:

/usr/bin/gpatch --verbose --ignore-whitespace -p1 -d . \
    <mod_cache.diff
Run Code Online (Sandbox Code Playgroud)

输出是:

...

Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Index: httpd/modules/cache/mod_cache.h
|===================================================================
|--- httpd/modules/cache/mod_cache.h
|+++ httpd/modules/cache/mod_cache.h
--------------------------
Patching file modules/cache/mod_cache.h using Plan A...
Hunk #1 succeeded at 24.
Hunk #2 succeeded at 86.
Hunk #3 succeeded at 138.
Hunk #4 succeeded at 163.
Hunk #5 succeeded at …
Run Code Online (Sandbox Code Playgroud)

c patch unified-diff

3
推荐指数
1
解决办法
3756
查看次数

如何在TortoiseSVN中的两个版本之间创建补丁文件?

我正在使用 TortoiseSVN 1.7 并希望在两个修订版之间创建补丁文件。

我已经搜索过,但是这些线程How do I create a patch from diff between revisions using TortoiseSVN? 在两个修订版之间创建补丁对我来说不起作用,因为Show changes as unified diff会生成非常简单的文件(不是补丁文件)。就像是

索引: myfile.txt

=================================================== =================

我在《查看差异》中读到

如果您想在一个视图中查看特定修订版中对所有文件所做的更改,可以使用 Unified-Diff 输出(GNU 补丁格式)。这仅显示了几行上下文的差异。它比视觉文件比较更难阅读,但会一起显示所有更改。从“修订日志”对话框中选择感兴趣的修订,然后从上下文菜单中选择“将差异显示为统一差异”。

我想创建一个包含有用差异信息的单个补丁文件(或根据修改的文件的许多补丁文件)(例如菜单上下文 TortoiseSVN -> 创建补丁...)

tortoisesvn revision patch unified-diff

3
推荐指数
1
解决办法
4497
查看次数

在浏览器中为 diff2html 创建统一的 diff 文本

是否有一个库可以从diff2html可以使用的两个字符串中生成统一的差异?我试过difflib但输出似乎不符合 diff2html 需要的要求。我需要一个 .js 库,我可以在网页中导入以生成 JSON 之间的差异。

尝试使用该lineterm参数,但无法使该工具正常工作。如果我使用文档中的字符串作为示例,那么它可以工作:

--- a/server/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go\n+++ b/server/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go\n@@ -1035,6 +1035,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (\n \n // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n \n+func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n+\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n+\tn = int(r0)\n+\tif e1 != 0 …
Run Code Online (Sandbox Code Playgroud)

javascript unified-diff difflib diff2html

3
推荐指数
1
解决办法
2561
查看次数

如何通过git-config配置统一的差异上下文?

如何通过git-config配置统一上下文,以便我不必总是为-U或--unified选项提供值?

git git-diff unified-diff git-config

1
推荐指数
1
解决办法
501
查看次数