difftastic/translation/zh-CN/README-zh-CN.md

3.9 KiB

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

Difftastic是一个根据文件的语法进行比较的结构化比较工具。

有关安装说明, 详见说明书中的 安装部分

基础实例

Screenshot of difftastic and JS

在这个JavaScript的例子中我们可以看到

(1) Difftastic理解嵌套。它强调了匹配的{}符号,同时尽管foo()之前有空格Difftastic知道它并没有改变。

(2) Difftastic了解哪些行应该被对齐尽管改变了但是Difftastic依旧可以将左边的bar()和右边的bar(1)对齐。

(3) Difftastic理解换行并不会改变意义。例如"eric"现在是在新的一行上,但并没发生改变。

一分钟演示

asciicast

这个一分钟的录屏演示了同时使用单独文件与git时Difftastic的使用。

语言

Difftastic支持超过20种编程语言完整列表参照说明书

如果一个文件的拓展名无法被识别Difftastic就会使用带高亮显示的基于文本的差异分析。

已知问题

性能。Difftastic对有大量改动的文件的拓展性较差并且会消耗大量的内存。

显示。通常来说Difftastic的并排显示功能效果很好但是有的时候会让人困惑。

鲁棒性。Difftastic经常会有修复崩溃的版本发布。

非目标

修补。Difftastic的输出是供人使用的它不会生成可以在以后应用的补丁。如果你需要补丁请使用diff

补丁文件也是以行为单位的这方面的能力对Difftastic来说十分有限。Difftastic可以发现在同一行中增加和删除的内容并跟踪新旧文件的行号之间的关系。

合并。AST合并是一个困难的问题。Difftastic并没有解决这个问题。

常见问题

这基本上不就是--word-diff --ignore-all-space吗?

字符差异分析 并不能做到这个.

Difftastic会解析你的代码会去理解什么是空格是具有意义的。例如在字符串里或是像Python这样的语言中空格就是具有意义的。同时它会理解x-1在JS中代表着三个符号而在Lisp中却是一个符号

我可以在git上使用difftastic吗

你可以的Difftastic手册包含git的使用说明方法。同时你可以使用mercurial

如果你是一个magit用户请查看这个博客它展示了使用Difftastic和magit的一种用法。

Difftastic能否与我最喜欢的工具整合

可能不会但Difftastic还很年轻。会考虑为你最喜欢的工具写一个插件写好我会在README中链接它

许可证

Difftastic是一个基于MIT许可证的开源软件更多信息详见LICENSE。

这个资源库的vendored_parsers/目录下还包括在 其他作者的树状分析器。这些都是基于MIT许可证和Apache许可证。更多细节见vendored_parsers/*/LICENSE

sample_files/中的文件也采用MIT许可除非在文件头中另有说明。