标签: diff

为windows应用补丁文件的GUI工具

有许多适用于 Windows 的优秀 GUI 差异工具(我使用 Araxis Merge 和 kDiff3),但没有一个(我能找到)会应用补丁文件。我希望它像这样工作:我在一个工具中打开一个基本文件和一个补丁。我应该在左侧获得基本文件的差异视图,以及在右侧应用补丁后该文件的外观。然后我可以将结果文件保存在某处(可能在清理冲突之后)。

这似乎是一件显而易见的事情,以至于我对我现有的工具没有做到这一点感到震惊。此功能是否存在于某处(对于 Windows?)

windows diff gui

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

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

一次性使用 Vimdiff 和 git

我使用 vimdiff 作为我的 git difftool。

假设我已经更改了十二个文件。问题是有时我会在运行git diff第四个或第五个文件时看到一些我想编辑/更改的内容。有时我需要在此之外再做一些改变。问题是我不能只是:qa回到黑客攻击,因为在 vimdiff 中弹出了六到七个不同的差异。:qa每次我想中止 git diff 时都不查看所有这些文件,这真的很乏味。

有什么方法可以将 vimdiff 设置为 git 的 difftool,以便所有差异都在同一个 vim 实例中打开,例如在单独的选项卡中?

diff vim git vimdiff

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

多个文件的差异

我使用“diff -y”命令逐行比较程序不同版本的 2 个结果。像这样:

1      1
123  | 234
asdf | qerq
Run Code Online (Sandbox Code Playgroud)

是否有多个文件的模拟,这将允许逐行比较 3 或 4 个文件?像这样:

1      1      1      1
123  | 234  | 345  | 234
asdf | qerq | qdfd | asdd
Run Code Online (Sandbox Code Playgroud)

diff

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

为什么 GNU diff 这样的内存猪?

有足够多的问题询问如何区分大文件,因为diff无法处理它们。

我想知道为什么GNU diff 无法处理它们。

我做了一个小实验。我比较了两个相同的数据集,就像这样

$ time /usr/bin/diff -u <(cat file1) <(cat file2) > /tmp/memoryhog
^C

real    5m6.478s
user    0m0.540s
sys     0m19.184s
Run Code Online (Sandbox Code Playgroud)

这是 top 在我取消工作的同时显示的内容:

差异内存使用

3  PID  %MEM    VIRT   SWAP    RES   CODE    DATA    SHR nMaj nDRT S  PR  NI  %CPU COMMAND
 19087  30.0   16.0g          9.4g   0.2m   16.0g   2.0m           R  20       0.5 /usr/bin/diff -u /dev/fd/63 /dev/fd/62
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,输出是空的:

$ stat -c '%s' /tmp/memoryhog 
0
Run Code Online (Sandbox Code Playgroud)

(它们实际上不是文件,而是数据库结果,我忘记跟踪diff当时实际消耗了多少字节- 估计每个管道文件 30-60GiB。)

但是那里发生了什么?

diff 当它甚至不需要跟踪单个字节更改时,是否正在分配大量内存?

我只能假设部分原因是必须跟踪行数,但是分配 16GiB 虚拟内存对于该任务来说似乎有点多!

是什么diff觉得需要那么多的内存?或者只是糟糕的内存处理? …

memory linux diff gnu

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

在浏览器中区分两个页面/文件的工具

我希望能够区分两个页面的来源,甚至是在两个浏览器窗口中打开的纯文本文件。我唯一能找到的是Firefox的PageDiff插件,但是还有其他可用的东西吗(对于任何浏览器)?

browser firefox google-chrome internet-explorer diff

6
推荐指数
2
解决办法
2547
查看次数

“差异”太字节文件

是否有任何工具可以“区分”TB 大小的文本文件?

diff

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

是否有允许您排除列的差异实用程序?

例如,我有一个文本文件,每一行都是一个长字符串。我想排除这个字符串的 2 个“段”,比如第 1-7 和 20-22 列。所以下面的两行将是匹配的:

123456789012345678901234567890 
------------------------------
xxxxxxxAAAAAAAAAAAAxxxBBBBBBBB
yyyyyyyAAAAAAAAAAAAyyyBBBBBBBB
Run Code Online (Sandbox Code Playgroud)

我知道 WinMerge 有一个“IgnoreColumns”插件,但我从来没有这样做过。在本例中,我将其重命名为 IgnoreColumns_1-7, 20-22.dll,在插件菜单中选择它,然后选择“Pre-Differ”。但它从未奏效。

我将比较不想修改的大文件。我不反对在与 sed 或类似的比较中对它们进行流式编辑,但我不想修改实际文件。我还没有选择将 sed 提供给 diff 只是因为我希望获得更直观的数据视图。

diff deduplication

6
推荐指数
2
解决办法
7830
查看次数

如何显示两个重复备份之间的差异?

我希望能够看到两个重复备份之间的差异。我知道有这个命令,verify但它只列出与最新备份不同的文件。如果我尝试list-current-files使用不同的备份日期然后执行diff它似乎无法按预期工作。

那么如何获得两个相邻备份之间已更改文件和新文件的列表?

谢谢!

backup diff duplicity

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

忽略 git diff 中的某些更改

是否可以从 git diff 或相关命令获取排除特定类别更改的报告?

我被要求审查一项更改,其中大量文件经历了相当于 s/2016/2017/g 的更改。(我们升级了第三方 jar,因此我们的许多导入现在引用了不同的包。)

是否有选项可以从命令行查看此差异,但抑制仅包含以下内容的所有更改,以便我可以专注于任何逻辑更改?

忽略:

-import com.example.2016_2.util.Utility
+import com.example.2017_2.util.Utility
Run Code Online (Sandbox Code Playgroud)

保持:

-Utility util = new Utility();
+Utility util = Utility.create();
Run Code Online (Sandbox Code Playgroud)

如果答案是编写我自己的脚本并通过git diff --porcelain或通过设置集成GIT_EXTERNAL_DIFF,我当然愿意;只是想知道是否

  1. 这是开箱即用的支持,不知何故我在手册页中错过了它;
  2. 我还可以使用其他 git diff* 命令来实现此目的;
  3. 如果已经存在合适的 diff 可执行文件,我可以通过GIT_EXTERNAL_DIFF

bash diff git command-line

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