当前位置: 首页 > news >正文

x-cmd pkg | difft - 更直观的代码比较工具,可作为 diff 的替代品

目录

    • 简介
    • 首次用户
    • 更精准的语法高亮
    • 支持在 git 命令中使用 difft 来比较
    • 已知问题
    • 竞品和相关项目
    • 进一步阅读

简介

difft(Difftastic) 是一个根据文件语法进行差异分析的结构化比较工具。

Difft 的原理是使用 Tree-sitter 来构建解析树,然后将解析树转换为一个更简单的树,可以进行差异比较。这里简单了解一下 Tree-sitter: 它是一个用于解析源代码的现代解析器生成工具和库,它可以将源代码解析为抽象语法树(AST),使程序能够理解和处理源代码的结构和语法。

首次用户

本文的 demo 展现了使用 difft 来比较两个目录和 rust 文件在语法上的差异。

在这里插入图片描述

更精准的语法高亮

  1. difft 可以根据文件的语法比较文件的不同之处并进行高亮显示,但如果一个文件的扩展名不能识别的话,difft 使用的是带有单词高亮的文本差异比较。若要查看 difft 支持哪些语言,可以点击这个链接查看 difft语言支持
  2. 支持仅检查两个文件是否具有相同的语法结构,而不进行差异计算

支持在 git 命令中使用 difft 来比较

  1. 当前环境使用: 可以通过设置环境变量 GIT_EXTERNAL_DIFF (GIT_EXTERNAL_DIFF=difft git diff)然后在当前环境使用 git diff 即可
  2. 全局配置: 如果您想默认使用 difftastic,可以使用 git config 进行配置。具体操作方式可以在这里查看

除 git 以外,difft 还支持 Mercurial 和 Fossil(Mercurial 和 Fossil 都是版本控制系统)

已知问题

  1. difft 在比较大文件上的性能较差,并且有可能会占用大量的内存,详情请看这里。

竞品和相关项目

以下 cli 项目也是基于树进行结构差异分析:

  1. json-diff 比较 JSON 文件的结构 diff
  2. GumTree 解析多种编程语言,然后执行基于树的 diff,输出 HTML 显示。
  3. Diffsitter 一个基于树的比较工具。
  4. Autochrome 是一个用于在结构上比较和突出显示 clojure 源代码的程序。
  5. graphtage 通过解析为通用文件格式,然后显示差异来比较结构化数据,允许将 JSON 与 YAML 进行差异。

进一步阅读

  • 项目托管在 GitHub 上,里面的 README 文档提供了详细的参数功能和使用说明。
  • 官方提供了详细的 manual 文档,该文档对 difft 的解析进行了详尽的说明。
  • 如果你是 magit 用户,你可以参考 difftastic-diffing-with-magit,将 difftastic 与 magit 一起使用。

更多内容请查阅 : pkg/difft

转载请标明原文链接 :https://www.x-cmd.com/pkg/difft


关注微信官方公众号 : oh my x

获取开源软件和 x-cmd 最新用法


http://www.mrgr.cn/news/43698.html

相关文章:

  • 降压芯片TPS54821
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-06
  • ChatGPT 更新 Canvas 深度测评:论文写作这样用它!
  • 停车场停车位检测数据集2166张 违停 带标注 voc yolo 2类
  • C++11之线程
  • 移动硬盘无法读取?详解原因与数据恢复方案
  • 秋招内推2025-招联金融
  • 国内目前顶级的哲学教授颜廷利:全球公认十个最厉害的思想家
  • 基础算法(5)——位运算
  • 快速理解mQ(三)——RabbitMQ 各种交换机的区别与应用
  • yolov11 部署瑞芯微rk3588、RKNN部署工程难度小、模型推理速度快
  • 从零开始构建大型语言模型——实现注意力机制
  • 各省份农林牧渔业总产值统计数据(2000-2022年)
  • Cisco Catalyst 9000 交换产品系列 IOS XE 17.15.1 发布下载,新增功能概览
  • 隐喻的使用及误用
  • InnoDB 磁盘结构 - Binlog
  • MySQL 管理
  • 鸿蒙harmonyos next flutter混合开发之开发plugin(获取操作系统版本号)
  • 资产管理系统建设方案,资产盘点,rfid,出入库,消耗品管理,系统方案,系统源码(word原件)
  • C++——用类实现输入和输出时间。要求:(1)私有数据成员包括时、分、秒。(2)输入输出功能改为由成员函数实现。(3)在类体内定义成员函数。