1 个不稳定版本

0.23.0 2022年9月15日

#4#difftastic

MIT 许可证

144MB
4.5M SLoC

C 4.5M SLoC // 0.0% comments Rust 7.5K SLoC // 0.0% comments C++ 3.5K SLoC // 0.2% comments Scheme 1.5K SLoC // 0.1% comments

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

Difftastic 是一个基于语法比较文件的实验性差异工具。

查看 手册 以开始使用。

演示 1:包裹表达式

Difftastic 理解表达式嵌套。如果您在一个 if 语句中包裹一个表达式,Difftastic 理解内部值未更改。

Elisp screenshot

与 git 的默认差异比较。它被缩进更改所困惑,不知道哪个关闭括号被添加了。

Elisp comparison screenshot

演示 2:重新排列代码

Difftastic 对代码格式更改具有鲁棒性。如果您更改单行中出现的项的数量,Difftastic 将仅显示已更改的项。

Rust screenshot

在 git 的默认差异中,更难看出 iter 和花括号未更改。查看受影响的行号也更困难。

Rust comparison screenshot

语言

Difftastic 支持以下语言

  • Bash
  • C
  • C++
  • C#
  • Clojure
  • Common Lisp
  • CSS
  • Elixir
  • Emacs Lisp
  • Go
  • Haskell
  • Java
  • JavaScript (和 JSX)
  • JSON
  • OCaml
  • PHP
  • Python
  • Ruby
  • Rust
  • Scala
  • TypeScript (和 TSX)

如果文件具有无法识别的扩展名,Difftastic 将使用基于行的差异。

已知问题

性能。Difftastic 在具有大量更改的文件上的扩展性相对较差,并且会使用大量内存。

显示。Difftastic 有一个并排显示,通常工作良好,但可能会令人困惑。

鲁棒性。Difftastic 定期发布解决崩溃的版本。

非目标

补丁文件。如果您想创建可以稍后应用的补丁,请使用 diff。Difftastic 忽略空白,因此其输出是损耗的。(AST 补丁也是一个难题。)

许可证

Difftastic 在 MIT 许可证下是开源的,有关详细信息,请参阅 LICENSE。

sample_files/ 中的文件也在 MIT 许可证下,除非在其标题中另有说明。

依赖项

~7–17MB
~222K SLoC