"diff" 可以在指定点强制同步吗?

Can "diff" be forced to sync at a specified point?

我正在合并包含相同功能的不同版本的源文件。这些函数在不同文件中的顺序不一定相同。例如,foo.c 可能包含 baz() 后跟 quux(),而 bar.c 包含 quux() 后跟 baz()

我想强制 diff 在我当前正在处理的函数的第一行同步,以便我可以只看到该函数中的更改。有没有办法用 GNU diff(或其他 diff 实用程序)做到这一点?我有三个解决方法,none 其中很棒:

  1. 将函数复制到单独的文件和 diff 这些文件。缓慢且繁琐,而且存在复制粘贴错误的风险。

  2. 将感兴趣的函数移到每个文件的顶部,然后比较文件。稍微容易一些,但仍然很费时间。

  3. 在每个文件前添加一大块 lorem ipsum 文本。 (这是我目前正在使用的那个。)不需要移动代码,但是嘿 - 为什么我必须做机器完全有能力做的工作? :)

不幸的是,

gnu diff 不会这样做,并且尝试在它前面使用 split 根本不实用。

一些比较工具可以让你用所谓的 "synchronization links" 强行匹配行,Araxis 可以做到(在 Linux 上使用 Wine),例如 Beyond Compare。