科学工具
科学工具让世界更美好
让世界更美好

文件和文件夹对比和合并工具 WinMerge

WinMerge 是一个 Windows 下的开源文件和文件夹对比和合并工具,能准确地标出文件之间的差异,支持各种编程语言的代码高亮,是查看文件夹间的区别、对比文件的修改内容、解决代码冲突的利器。

文件对比:能以并排方式直观对比两个或三个文本文件的内容,逐行高亮显示它们之间的差异,还能高亮显示一行内的差异。

文件夹对比:对比两个文件夹的内容,显示哪些文件存在差异、缺失,或者仅存在于其中一个文件夹中。

合并功能:可以在文件或文件夹之间合并更改,你能选择将哪些差异从一个文件或文件夹整合到另一个中。

语法高亮:对多种编程语言和文件格式提供语法高亮,让识别代码或结构化文本中的更改变得更简单。

补丁文件创建:生成描述文件间差异的补丁文件(支持普通、上下文和统一等格式)。

忽略选项:可以配置忽略空白差异、大小写变化,或者基于正则表达式的特定行。

外壳集成:与Windows资源管理器集成,右键点击文件或文件夹就能直接用WinMerge进行对比。

压缩包支持:借助7-Zip,对比压缩包格式中的文件。

只要需要追踪文件变化、对比不同版本的文档或代码,或者合并不同人员做出的修改,都能用到这款工具。

主题设置

WinMerge提供多个预设主题,支持自定义主题。

快速主题设置步骤

1、打开“选项”,进入“颜色”部分

2、在每个子部分中调整颜色至满意

3、“导出...”选项会生成包含所有设置的ini文件

4、将“[你的安装文件夹]\WinMerge\ColorSchemes\Twilight.ini”复制为“YourNewTheme.ini”

5、从导出的ini文件中复制相应的颜色设置到“YourNewTheme.ini”

6、将主题文件放入“ColorSchemes”文件夹,就能在“选项”中选择使用

文件夹结构

WinMerge的源代码、插件、过滤器、安装程序以及各种工具都存放在以下子文件夹中:

ArchiveSupport/Merge7z:包含Merge7z的动态链接库,用于连接WinMerge和7-Zip,编译WinMergeU.exe必须用到。还有Merge7z动态链接库的独立安装程序。

Build:编译WinMerge时由编译器创建,包含编译后的可执行文件、库、用户手册等。

BuildTmp:编译WinMerge时由编译器创建,包含编译过程中生成的临时文件,可安全删除。

ColorSchemes:颜色方案/主题。

Docs:包含用户和开发者文档,分布在不同子文件夹中。打开Docs文件夹中的index.html就能浏览。

Externals:包含多个来自WinMerge项目外部的库,用于构建,部分可能为WinMerge做了定制。这些库包括XML解析器和正则表达式解析器。

Filters:WinMerge的文件过滤器。

Installer:WinMerge的安装程序。

Plugins:WinMerge运行时插件动态链接库和脚本的源代码及二进制文件。

ShellExtension:Windows外壳(资源管理器)集成,为资源管理器上下文菜单添加菜单项。

Src:WinMerge程序的源代码。

Testing:包含一组测试差异文件和运行测试并报告结果的脚本。该文件夹还有一个Google Test子文件夹,里面是用Google测试框架制作的单元测试。

Tools/Scripts:WinMerge开发者使用的各种工具,可查看每个工具中的自述文件了解详情。

Translation:用于翻译的语言文件。

运行与调试方法

WinMerge文件夹中有不同的Visual Studio解决方案文件(.sln),可用于构建、调试和运行,方便测试更改。

如果运行过任何BuildAll脚本,可以从\Build\X64\Release\WinMergeU.exe路径运行WinMerge。

如果架构不是X64,在构建完成后生成的其他文件夹中查找即可。

另一种调试方法是,运行上一步中的可执行文件,然后在VS中附加到正在运行的进程。

构建WinMerge的环境要求

Visual Studio 2017

• 社区版、专业版或企业版 • VC++ 2017最新v141工具 • 适用于(ARM、ARM64)的Visual C++编译器和库 • 对C++的Windows XP支持 • 适用于(x86和x64、ARM、ARM64)的Visual C++ MFC • 适用于(x86和x64、ARM、ARM64)的Visual C++ ATL • Windows 10 SDK

Visual Studio 2019

• 社区版、专业版或企业版 • MSVC v142 - VS 2019 C++(x64/x86、ARM、ARM64)构建工具(最新版) • 适用于最新v142构建工具(x86和x64、ARM、ARM64)的C++ MFC • 适用于最新v142构建工具(x86和x64、ARM、ARM64)的C++ ATL • Windows 10 SDK

Visual Studio 2022

• 社区版、专业版或企业版 • MSVC v143构建工具(x64/x86、ARM、ARM64) • 适用于最新v143构建工具(x64/x86、ARM、ARM64)的C++ MFC • 适用于最新v143构建工具(x64/x86、ARM、ARM64)的C++ ATL • Windows 10 SDK

其他工具/程序

• git • Inno Setup 5.x和6.x • 7-Zip • Python • Pandoc • MSYS2及MSYS2软件包(po4a和diffutils)

构建步骤

git clone --recurse-submodules https://github.com/WinMerge/winmerge
cd winmerge
DownloadDeps.cmd
BuildAll.vs2022.cmd [x86|x64|ARM|ARM64] 或 BuildAll.vs2019.cmd [x86|x64|ARM|ARM64] 或 BuildAll.vs2017.cmd [x86|x64|ARM|ARM64]