我试图生成“未解决的冲突”——就像没有运气的文件。
我查过了
diff
manpage和googled介绍了差异、合并等。。。但我只找到了关于如何处理这些文件的信息,而没有找到关于如何实际生成这些文件的信息。
需要明确的是,我试图做的是,有两个相似的文件,生成一个自动合并的文件,类似于大多数VCS系统(如Git或Subversion)在“冲突”状态下生成的文件。
主要目标是能够快速编辑它以手动解决所有差异,就像我在Git或Subversion中所做的那样,但在任何VCS系统中都没有它们。
我“几乎”成功地用
diff -C 1000000
...但生成的文件包含所有修改的行。即:对于公共行,前缀为“-”或“+”(取决于它是否来自第一个或第二个文件)或“”(空格)。
我将获得一个“几乎没有变化”的文件,其中有以下强调差异的示例部分:
<<<<<<<< File1
Section from File1
Foo
========
Section from File2
Bar
>>>>>>>> File2
回答@s.m.评论,我在这里解释我的确切目标是什么(因为在评论中解释太长):
我已经在生产服务器上成功实现了二进制完整/增量备份(bacula),并且有一个助手脚本来配置热备份服务器。
为了更简单,我们计划创建一个(或可能多个)“超级”热备用服务器,其中包含多个集群,复制不同的主服务器。
我的目标是用一个脚本轻松创建新的备用集群,而不需要太复杂的调试,也不必担心备份设置(因为所有集群都将立即备份)。
我几乎成功地实现了这个脚本:它在一个空闲端口中创建了一个新集群,调整了所需的配置参数,并将其与master同步。
因此,为了使合并这两个配置文件更容易(并且不容易出错),我实现了一个bash函数来从masters检索配置文件,现在,我的目标是将其与前面提到的“默认调优”配置文件合并。
通过这种方式,添加新的备用服务器将与执行提供主机网络名称的脚本一样简单,并查看自动合并的文件以手动解决合并过程中遇到的几个差异。
编辑2:
-
只需使用GNU Diff(比如@s.m.在他的评论中指出的),甚至可以使用复杂的参数或管道到大多数unix*系统上通常可用的外部工具,这样我就可以将其包装在bash函数中,并在脚本中使用它,而不需要依赖项。
-
-