1个不稳定版本
0.27.0 | 2022年4月13日 |
---|
#2617 in 解析实现
164MB
5M SLoC
关于此分支的说明: 与原始difftastic相比,此Windows版本正确确定了终端大小。
Difftastic是一个实验性的diff工具,根据语法比较文件。
基本示例
在这个JavaScript示例中,我们可以看到
(1) Difftastic理解嵌套。它高亮显示匹配的{
和}
,但理解尽管有前导空格,foo()
没有改变。
(2) Difftastic理解哪些行应该对齐。它将左边的bar()
与右边的bar(1)
对齐,尽管它们有所变化。
(3) Difftastic理解换行没有意义。"eric"
现在在新的一行,但它没有改变。
一分钟演示
这个一分钟的视频展示了difftastic如何与独立文件和git一起使用。
支持的语言
Difftastic支持超过20种编程语言,详见手册中的完整列表。
如果文件有未识别的扩展名,difftastic将使用带单词高亮的文本diff。
已知问题
性能。Difftastic在大规模更改的文件上扩展相对较差,并且会消耗大量内存。
显示。Difftastic 具有并排显示功能,通常效果良好,但可能会令人困惑。
健壮性。Difftastic 定期发布更新,修复崩溃问题。
非目标
打补丁。Difftastic 的输出旨在供人类阅读,它不会生成可以稍后应用的补丁。如果需要补丁,请使用 diff
。
(补丁文件也是按行导向的,这对 difftastic 来说太有限了。Difftastic 可能会在同一行上找到添加和删除,并且它会追踪旧文件和新文件行号之间的关系。)
合并。抽象语法树(AST)合并是一个难题,difftastic 没有解决这个问题。
常见问题解答
这基本上是不是 --word-diff --ignore-all-space
?
单词差异 不能做到这一点。
Difftastic 解析您的代码。它理解何时空白重要,例如字符串字面量或在 Python 等语言中。它理解在 JS 中 x-1
是三个令牌,但在 Lisp 中是一个令牌。
我可以使用 difftastic 与 git 一起使用吗?
可以!difftastic 手册 包括 git 使用说明。您也可以使用它 与 mercurial 一起使用。
difftastic 是否可以与我的 favorite 工具集成?
可能不行。Difftastic 还很年轻。考虑为您喜欢的工具编写插件,我将在 README 中将其链接!
许可证
Difftastic 在 MIT 许可证下是开源的,有关更多详细信息,请参阅 LICENSE。
sample_files/
中的文件也是 MIT 许可证,除非在它们的头文件中有其他声明。
依赖关系
~7–16MB
~192K SLoC