Diff

Top 23 Diff Open-Source Projects

  • delta

    A syntax-highlighting pager for git, diff, and grep output

  • Project mention: Difftastic, a structural diff tool that understands syntax | news.ycombinator.com | 2024-03-21
  • difftastic

    a structural diff that understands syntax 🟥🟩

  • Project mention: Linus Torvalds adds arbitrary tabs to kernel code | news.ycombinator.com | 2024-04-17

    i want a diff tool that shows me exactly which tokens have changed, and which haven't, regardless of how they are laid out.

    These already exist: https://github.com/Wilfred/difftastic

    when we get that, then we should get even less merge conflicts.

    Counterintuitively, that is not the case. AST-merge is a much, much, much, much, much harder problem than AST-diff.

    https://github.com/Wilfred/difftastic?tab=readme-ov-file#can...

    The fact that diffs can be used to drive a 3-way merge is in fact an accidental property that arises due to the sheer crudeness of the diff format. As soon as you start using more-sophisticated diff formats, solutions to "the diff problem" no longer lead directly to solutions to "the merge problem".

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • diff-so-fancy

    Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada:

  • Project mention: Difftastic, a structural diff tool that understands syntax | news.ycombinator.com | 2024-03-21

    The diff itself is impressive, but in terms of styling I still prefer diff-so-fancy[1]. It's easier to read at a glance.

    [1]: https://github.com/so-fancy/diff-so-fancy/

  • patch-package

    Fix broken node modules instantly 🏃🏽‍♀️💨

  • Project mention: Finding Stars and Affirmations in the Sky with Three.js for Ayra Starr | dev.to | 2024-04-01

    In order to allow users to use their device as a controller to adjust the position of the camera and find stars, I use the depreciated DeviceOrientationControls by patching it back into Three. In order for DeviceOrientationControls to function, we need access the user to grant access to their device's orientation. I attempt to gain access to this, alongside their camera, during a previous step of the UX using a custom composable I wrote for this purpose. You can see that permission step in the mockup video above. Once this permission is granted, we can initialize our DeviceOrienationControls with a single line.

  • vim-gitgutter

    A Vim plugin which shows git diff markers in the sign column and stages/previews/undoes hunks and partial hunks.

  • Project mention: I use the default file browser in vim (netrw). I know there are plugins that a lot of people like. Should I switch? | /r/vim | 2023-06-29

    I personally use nerdtree. Add nerdtree-git-plugin too, that's nice when looking at your project (for files, use vim-gitgutter).

  • diff-match-patch

    Diff Match Patch is a high-performance library in multiple languages that manipulates plain text.

  • Project mention: Ideas for approaching pattern matching/distance problem | /r/learnprogramming | 2023-06-29

    I also came across this diff match algorithms: https://github.com/google/diff-match-patch

  • pixelmatch

    The smallest, simplest and fastest JavaScript pixel-level image comparison library

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • winmerge

    WinMerge is an Open Source differencing and merging tool for Windows. WinMerge can compare both folders and files, presenting differences in a visual text format that is easy to understand and handle.

  • jsondiffpatch

    Diff & patch JavaScript objects

  • Project mention: Exploring the Canvas Series: The Art of Time Reversal in the Canvas | dev.to | 2024-01-10

    For the diff operation, I recommend using jsondiffpatch

  • DifferenceKit

    💻 A fast and flexible O(n) difference algorithm framework for Swift collection.

  • microdiff

    A fast, zero dependency object and array comparison library. Significantly faster than most other deep comparison libraries and has full TypeScript support.

  • diffview.nvim

    Single tabpage interface for easily cycling through diffs for all modified files for any git rev.

  • Project mention: How to exit all the tabs in Diffview.nvim? | /r/neovim | 2023-08-16

    Edit: It appears to be a problem with noice

  • TextDistance

    📐 Compute distance between sequences. 30+ algorithms, pure python implementation, common interface, optional external libs usage.

  • diff2html

    Pretty diff to html javascript library (diff2html)

  • Project mention: Unified versus Split Diff | news.ycombinator.com | 2023-10-24
  • nbdime

    Tools for diffing and merging of Jupyter notebooks.

  • Project mention: Stuff I Learned during Hanukkah of Data 2023 | dev.to | 2023-12-18

    I remember hearing about nbdime and thinking it sounded useful, but I've never really needed it since I rarely use Jupyter in the first place. But then I made some changes to my Hanukkah of Data 2023 notebook to work with the follow-up "speed run" challenge (a new dataset and slightly tweaked clues), and the native Git diff was too noisy to be useful. nbdime came to the rescue! Here are the changes I had to make for days 2 and 3 during the speed run:

  • graphtage

    A semantic diff utility and library for tree-like files such as JSON, JSON5, XML, HTML, YAML, and CSV.

  • Project mention: Pijul: Version-Control Post-Git • Goto 2023 | news.ycombinator.com | 2023-08-11

    I'm not familiar with Pijul, and haven't finished watching this presentation, but IME the problems with modern version control tools is that they still rely on comparing lines of plain text, something we've been doing for decades. Merge conflicts are an issue because our tools are agnostic about the actual content they're tracking.

    Instead, the tools should be smarter and work on the level of functions, classes, packages, sentences, paragraphs, or whatever primitive makes sense for the project and file that is being changed. In the case of code bases, they need to be aware of the language and the AST of the program. For binary files, they need to be aware of the file format and its binary structure. This would allow them to show actually meaningful diffs, and minimize the chances of conflicts, and of producing a corrupt file after an automatic merge.

    There has been some research in this area, and there are a few semantic diffing tools[1,2,3], but I'm not aware of this being widely used in any VCS.

    Nowadays, with all the machine learning advances, the ideal VCS should also use ML to understand the change at a deeper level, and maybe even suggest improvements. If AI can write code for me, it could surely understand what I'm trying to do, and help me so that version control is entirely hands-free, instead of having to fight with it, and be constantly aware of it, as I have to do now.

    I just finished watching the presentation, and Pijul seems like an iterative improvement over Git. Nothing jumped out at me like a killer feature that would make me want to give it a try. It might be because the author focuses too much on technical details, instead of taking a step back and rethinking what a modern VCS tool should look like today.

    [1]: https://semanticdiff.com/

    [2]: https://github.com/trailofbits/graphtage

    [3]: https://github.com/GumTreeDiff/gumtree

  • git-cola

    git-cola: The highly caffeinated Git GUI

  • Project mention: Ask HN: Can we do better than Git for version control? | news.ycombinator.com | 2023-12-10

    > Visual Studio does a decent job of abstracting the GIT nuances, but I personally use GIT Extensions, which looks and feels much better on Windows than the other cross platform UIs.

    IDEs and text editors sometimes have nice Git integrations in the UI, but I wanted standalone software that I can use for anything from various programming projects, to something like gamedev projects (with Git LFS) or arbitrary documents.

    In the end, I just forked over some money for GitKraken, it's pretty good, especially with multiple accounts on the same platforms, when you want to switch between them easily: https://www.gitkraken.com/

    There's also Sourcetree which I used before then, kind of sluggish but feature complete: https://www.sourcetreeapp.com/

    For something more lightweight, I also enjoyed Git Cola on various OSes: https://git-cola.github.io/ Even Git documentation has a page on the software out there, a good deal of which is free and has good platform support: https://git-scm.com/downloads/guis

    Quite frankly, I spend like 90% of the time using a GUI interface nowadays, when I want to easily merge things, or include very specific code blocks across multiple files in a commit, or handle most of the other common operations. Of course, sometimes there's a need to drop down to the CLI, but you're right that some GUI software feels like it actually improves the usability here.

  • deepdiff

    DeepDiff: Deep Difference and search of any Python object/data. DeepHash: Hash of any object based on its contents. Delta: Use deltas to reconstruct objects by adding deltas together. (by seperman)

  • terraboard

    :earth_africa: :clipboard: A web dashboard to inspect Terraform States

  • Project mention: Top 10 terraform tools you should know about. | dev.to | 2023-12-11

    Terraboard is a web-based dashboard designed for visualizing and querying Terraform states. It offers several key features: an overview page that lists the most recently updated state files along with their activities; a detailed state page showing versions and resource attributes of state files; a search interface for querying resources by type, name, or attributes; and a diff interface for comparing state versions. Terraboard supports various remote state backend providers, including AWS S3 for state management and DynamoDB for locking, S3-compatible backends like MinIO, Google Cloud Storage, Terraform Cloud (remote), and GitLab. This makes it a versatile tool for managing and understanding Terraform state files.

  • Dwifft

    Swift Diff

  • odiff

    The fastest pixel-by-pixel image visual difference tool in the world.

  • sad

    CLI search and replace | Space Age seD

  • diffsitter

    A tree-sitter based AST difftool to get meaningful semantic diffs

  • Project mention: AST-grep(sg) is a CLI tool for code structural search, lint, and rewriting | news.ycombinator.com | 2023-12-10

    Or https://github.com/afnanenayet/diffsitter. I've tried both and I like them. No preference or notable opinions on them yet!

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2024-04-17.

Diff related posts

Index

What are some of the best open-source Diff projects? This list will help you:

Project Stars
1 delta 20,537
2 difftastic 19,450
3 diff-so-fancy 17,077
4 patch-package 9,928
5 vim-gitgutter 8,271
6 diff-match-patch 7,080
7 pixelmatch 5,829
8 winmerge 5,698
9 jsondiffpatch 4,654
10 DifferenceKit 3,479
11 microdiff 3,467
12 diffview.nvim 3,331
13 TextDistance 3,296
14 diff2html 2,691
15 nbdime 2,593
16 graphtage 2,316
17 git-cola 2,179
18 deepdiff 1,888
19 terraboard 1,873
20 Dwifft 1,855
21 odiff 1,801
22 sad 1,521
23 diffsitter 1,516
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com