{"id":50532991,"url":"https://github.com/cdacamar/gap","last_synced_at":"2026-06-03T15:01:57.605Z","repository":{"id":356857674,"uuid":"1209032557","full_name":"cdacamar/gap","owner":"cdacamar","description":"UI text diff","archived":false,"fork":false,"pushed_at":"2026-05-10T04:57:26.000Z","size":5806,"stargazers_count":18,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-10T06:44:54.780Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdacamar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-13T03:01:45.000Z","updated_at":"2026-05-10T04:30:19.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cdacamar/gap","commit_stats":null,"previous_names":["cdacamar/gap"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/cdacamar/gap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdacamar%2Fgap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdacamar%2Fgap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdacamar%2Fgap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdacamar%2Fgap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdacamar","download_url":"https://codeload.github.com/cdacamar/gap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdacamar%2Fgap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33870026,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-03T15:01:57.313Z","updated_at":"2026-06-03T15:01:57.593Z","avatar_url":"https://github.com/cdacamar.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"res/gap.png\" /\u003e\u003cbr/\u003e\u003cbr/\u003egap - GUI Text Diff.\u003cbr/\u003e\u003cbr/\u003e\n\u003c/p\u003e\n\n# gap\nThis is a very simple text GUI diffing utility started during the [Handmade Essentials 2026 Jam](https://handmade.network/jam/essentials).\n\nThe goal of **gap** is to provide a very simple native utility which presents diffs in a way that you might see them on popular source control sites such as Github or Azure DevOps.\n\nThe secondary goal of **gap** is to serve as a proof-of-concept for implementing the linear variant of the Myers diff algorithm for use in [fred](https://fred-dev.tech).\n\n## Features\n* Self-contained repo.  There are no dependencies outside of a C++ compiler (some Linux caveats).\n* Multiple options for viewing inner-diffs within similar blocks (word-based and character-based).\n* Easily swap the order of diffs with a single button.\n* Expand/collapse context window at the push of a button (anything below 0 indicates 'infinite' context, implying there is no window).\n* Supports directory diffing where each file in the corresponding directory is matched to files in the opposite directory.\n* Full configuration explorer just like in **fred** from which you can change settings such as viewing line numbers, changing colors, or disabling animations.\n* Help panel which provides hotkey rebinding.\n* Multiple renderer options on Windows (DX11 and OpenGL with DX11 being default).\n* Supports subpixel font rendering (on by default).\n* Supports both Windows and Linux (no OSX).\n\n## Usage\n```\n$ gap a.txt b.txt # file diffing.\n$ gap .\\A .\\B     # directory diffing.\n```\nOr simply open **gap** and drag-and-drop files onto each panel side for diffing.  You can overwrite a file by dragging and dropping a new file onto that panel.  You can also open the directory diffing panel via the default of `CTRL+O` and drag directories onto each side for a directory comparison.\n\nAnother way of using gap is to tie it into git for viewing local diffs:\n\n```\n$ git config difftool.gap.path \"D:/git_projects/gap/build/gap.exe\"\n$ git config difftool.gap.cmd \"D:/git_projects/gap/build/gap.exe \"\"\"$LOCAL\"\"\" \"\"\"$REMOTE\"\"\"\"\n$ git config diff.tool gap\n```\nWhich you can then use `git difftool` instead of `git diff` to view diffs locally.\n\nAdditionally, you may want to consider invoking `git difftool` as `git difftool -d` to take advantage of the directory diffing in gap.\n\nOn Linux you would simply escape the quotes differently and alter paths.\n\n## Screenshots\n\n![screenshot-1](res/gap-screen.png)\n![screenshot-2](res/gap-screen-dirs.png)\n\n## Building\n\nWindows:\n1. Open up an VS2022 (or later) x64 Developer Command Prompt\n```\n$ build\n```\nOr for release:\n```\n$ build release\n```\n\nLinux:\n1. Ensure you have a recent-ish version of gcc.  I used 13.3.0.\n2. Have the following system dependencies installed:\n    * OpenGL (I used libglx-dev)\n    * X11 (I used libx11-dev)\n    * X11-ext (I used libxext-dev)\n    * Xrandr (I used libxrandr-dev)\n```\n$ ./build.sh\n```\nOr for release:\n```\n$ ./build.sh release\n```\n\n## License\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdacamar%2Fgap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdacamar%2Fgap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdacamar%2Fgap/lists"}