WinMerge/winmerge
GitHub: WinMerge/winmerge
WinMerge 是一款 Windows 平台上的开源文件和文件夹可视化差异比较与合并工具,帮助用户直观追踪变更并高效合并修改。
Stars: 8752 | Forks: 972
# WinMerge
[](https://github.com/WinMerge/winmerge)
[WinMerge](https://winmerge.org/) 是一款 Windows 平台上的开源差异比较与合并工具。
它可以比较文件和文件夹,并以清晰、直观的视觉格式呈现差异,便于理解和使用。
自 2000 年以来,WinMerge 一直处于活跃开发状态。
[](https://ci.appveyor.com/project/sdottaka/winmerge/build/artifacts)
[](https://github.com/WinMerge/winmerge/actions)
[](https://sourceforge.net/projects/winmerge/files/)
[](https://github.com/WinMerge/winmerge/releases/latest)
[](https://github.com/WinMerge/winmerge/blob/master/Translations/TranslationsStatus.md)
## WinMerge 能做什么?
WinMerge 提供了丰富的功能,用于比较和合并文件与文件夹:
- **文件比较**
并排比较两个或三个文本文件,逐行高亮显示差异。
也可以显示一行内的内联差异。
- **文件夹比较**
比较两个文件夹的内容,查看哪些文件存在差异、缺失或仅存在于其中一侧。
文件夹比较支持**高级过滤表达式**,允许根据名称、路径、大小、时间戳和其他属性包含或排除文件和文件夹。
- **合并**
通过选择性地将差异从一侧应用到另一侧,合并文件或文件夹之间的更改。
- **语法高亮**
针对多种编程语言和文件格式的语法高亮功能,有助于使代码和结构化文本更易于阅读和比较。
- **补丁文件创建**
生成标准 (normal)、上下文 或统一 格式的补丁文件。
- **灵活的忽略选项**
忽略诸如空格更改、大小写差异或与正则表达式匹配的行等差异。
- **外壳集成**
与 Windows Explorer 集成,可通过右键上下文菜单直接进行比较。
- **压缩包支持**
借助 7-Zip,WinMerge 可以像比较普通文件夹一样比较多种压缩包格式内的文件。
简而言之,WinMerge 对于任何需要跟踪更改、比较文件或目录版本,或高效合并修改的人来说都非常有用。
## 如何贡献
如果您发现错误或希望提出功能请求,请[提交 issue](https://github.com/WinMerge/winmerge/issues)。
如需贡献代码:
1. [Fork WinMerge 仓库](https://github.com/WinMerge/winmerge/fork)
2. 在你的 fork 中创建一个功能分支
3. 遵循现有的代码风格(使用 [Allman 缩进](https://en.wikipedia.org/wiki/Indentation_style#Allman_style))
4. 提交一个描述你所做更改的 [Pull Request](https://github.com/WinMerge/winmerge/pulls)
## 文件夹结构
WinMerge 仓库的组织结构如下:
- `ArchiveSupport/Merge7z`
连接 WinMerge 与 7-Zip 的 Merge7z DLL。构建 `WinMergeU.exe` 时需要。
其中也包含了这些 DLL 的独立安装程序。
- `Build`
编译期间创建的输出目录。包含可执行文件、库、手册等。
- `BuildTmp`
编译期间创建的临时文件。可以安全删除。
- `ColorSchemes`
配色方案和主题。
- `Docs`
用户和开发者文档。在本地浏览请打开 `Docs/index.html`。
- `Externals`
WinMerge 使用的第三方库(部分经过定制)。
- `Filters`
文件和文件夹过滤规则定义。
- `Installer`
WinMerge 安装程序源码。
- `Plugins`
运行时插件 DLL 和脚本。
- `ShellExtension`
添加上下文菜单项的 Windows Explorer 外壳扩展。
- `Src`
WinMerge 主源代码。
- `Testing`
测试文件和脚本,包括基于
[Google Test Framework](https://github.com/google/googletest) 的单元测试。
- `Tools/Scripts`
各种开发实用工具。
- `Translation`
语言和翻译文件。
更新日志可在以下地址查看:
[Docs/Users/ChangeLog.md](https://github.com/WinMerge/winmerge/blob/master/Docs/Users/ChangeLog.md)
## 如何运行和调试
WinMerge 提供了多个 Visual Studio 解决方案文件 (`.sln`) 用于构建和调试。
运行其中一个 `BuildAll` 脚本后,你可以从以下路径启动 WinMerge:
Build\X64\Release\WinMergeU.exe
如果你是为其他架构构建的,请检查相应的输出文件夹。
要进行调试,你也可以正常启动 WinMerge,然后将 Visual Studio 附加到运行中的进程。
## 构建 WinMerge
### Visual Studio 2017
- Community / Professional / Enterprise
- VC++ 2017 (v141) 工具集
- Visual C++ MFC 和 ATL
- Windows 10 SDK
- 可选:用于 C++ 的 Windows XP 支持
### Visual Studio 2022 或更高版本
- Community / Professional / Enterprise
- MSVC v143 或更新版本
- Visual C++ MFC 和 ATL
- Windows 10 SDK
### 附加工具
- git
- Inno Setup 5.x 和 6.x
- 7-Zip
- Python
- Pandoc
- MSYS2(包含 `po4a` 和 `diffutils`)
## 如何构建
```
git clone --recurse-submodules https://github.com/WinMerge/winmerge
cd winmerge
DownloadDeps.cmd
BuildAll.cmd [x86|x64|ARM64]
# 或
BuildAll.vs2022.cmd [x86|x64|ARM64]
# 或
BuildAll.vs2017.cmd [x86|x64|ARM|ARM64]
```
标签:SOC Prime, Windows, WinMerge, 代码审查, 代码比较, 可视化对比, 差异分析, 差异合并, 开发工具, 数据对比, 文件夹对比, 文件对比, 文件管理, 文本比较, 补丁生成, 语法高亮