"diff" 可以在指定点强制同步吗?
Can "diff" be forced to sync at a specified point?
我正在合并包含相同功能的不同版本的源文件。这些函数在不同文件中的顺序不一定相同。例如,foo.c
可能包含 baz()
后跟 quux()
,而 bar.c
包含 quux()
后跟 baz()
。
我想强制 diff
在我当前正在处理的函数的第一行同步,以便我可以只看到该函数中的更改。有没有办法用 GNU diff
(或其他 diff 实用程序)做到这一点?我有三个解决方法,none 其中很棒:
将函数复制到单独的文件和 diff
这些文件。缓慢且繁琐,而且存在复制粘贴错误的风险。
将感兴趣的函数移到每个文件的顶部,然后比较文件。稍微容易一些,但仍然很费时间。
在每个文件前添加一大块 lorem ipsum 文本。 (这是我目前正在使用的那个。)不需要移动代码,但是嘿 - 为什么我必须做机器完全有能力做的工作? :)
不幸的是,gnu diff 不会这样做,并且尝试在它前面使用 split
根本不实用。
一些比较工具可以让你用所谓的 "synchronization links" 强行匹配行,Araxis 可以做到(在 Linux 上使用 Wine),例如 Beyond Compare。
我正在合并包含相同功能的不同版本的源文件。这些函数在不同文件中的顺序不一定相同。例如,foo.c
可能包含 baz()
后跟 quux()
,而 bar.c
包含 quux()
后跟 baz()
。
我想强制 diff
在我当前正在处理的函数的第一行同步,以便我可以只看到该函数中的更改。有没有办法用 GNU diff
(或其他 diff 实用程序)做到这一点?我有三个解决方法,none 其中很棒:
将函数复制到单独的文件和
diff
这些文件。缓慢且繁琐,而且存在复制粘贴错误的风险。将感兴趣的函数移到每个文件的顶部,然后比较文件。稍微容易一些,但仍然很费时间。
在每个文件前添加一大块 lorem ipsum 文本。 (这是我目前正在使用的那个。)不需要移动代码,但是嘿 - 为什么我必须做机器完全有能力做的工作? :)
gnu diff 不会这样做,并且尝试在它前面使用 split
根本不实用。
一些比较工具可以让你用所谓的 "synchronization links" 强行匹配行,Araxis 可以做到(在 Linux 上使用 Wine),例如 Beyond Compare。