#diff #语法 #difftastic #理解 #大小 #分支 #终端大小

app difftastic_mod_for_windows

理解语法的diff工具(分支以修复Windows的终端大小)

1个不稳定版本

0.27.0 2022年4月13日

#2617 in 解析实现

MIT 许可证

164MB
5M SLoC

C 5M SLoC // 0.0% comments Rust 8K SLoC // 0.0% comments C++ 6.5K SLoC // 0.1% comments Scheme 2.5K SLoC // 0.1% comments

it's difftastic!
manual crates.io codecov.io

关于此分支的说明: 与原始difftastic相比,此Windows版本正确确定了终端大小。

Difftastic是一个实验性的diff工具,根据语法比较文件。

有关安装说明,请参阅入门指南,详见手册

基本示例

Screenshot of difftastic and JS

在这个JavaScript示例中,我们可以看到

(1) Difftastic理解嵌套。它高亮显示匹配的{},但理解尽管有前导空格,foo()没有改变。

(2) Difftastic理解哪些行应该对齐。它将左边的bar()与右边的bar(1)对齐,尽管它们有所变化。

(3) Difftastic理解换行没有意义。"eric"现在在新的一行,但它没有改变。

一分钟演示

asciicast

这个一分钟的视频展示了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