{"id":20090496,"url":"https://github.com/qookei/dir-diff","last_synced_at":"2025-05-06T03:30:43.871Z","repository":{"id":110462621,"uuid":"560178719","full_name":"qookei/dir-diff","owner":"qookei","description":"Directory diff utility","archived":false,"fork":false,"pushed_at":"2022-12-22T18:59:22.000Z","size":58,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-09T07:51:21.911Z","etag":null,"topics":["cli","diff","tool","utility"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qookei.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2022-10-31T22:47:33.000Z","updated_at":"2023-06-11T16:33:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"fa0a319c-2e8c-45ae-b1d7-bb1774401d36","html_url":"https://github.com/qookei/dir-diff","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qookei%2Fdir-diff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qookei%2Fdir-diff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qookei%2Fdir-diff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qookei%2Fdir-diff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qookei","download_url":"https://codeload.github.com/qookei/dir-diff/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252616036,"owners_count":21776906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cli","diff","tool","utility"],"created_at":"2024-11-13T16:24:43.378Z","updated_at":"2025-05-06T03:30:43.856Z","avatar_url":"https://github.com/qookei.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dir-diff\n\ndir-diff is an utility that computes the difference between two directories and\ndisplays it in a human-friendly format.\n\n## Building\n\ndir-diff is a regular [Meson](https://mesonbuild.com) project, with no extra\ncompile-time options.\n\nTo build it, you will need:\n - a C++20 compiler.\n - [fmt](https://github.com/fmtlib/fmt) if your C++ standard library does not\n   provide `std::format`/`std::print`.\n\n## Usage\n\nBasic usage is as follows:\n\n```\n$ dir-diff dir1 dir2\n```\n\nThe two paths should point to the directories whose contents are to be compared.\n\nFor a list of options, see `dir-diff --help`.\n\nWhen a difference is detected, the program will first print a legend, and the diff\nbelow.\n\n## How it works\n\nThe tool starts at the root of both directories, and first builds a union of the\nsets of files in both directories.\n\nThen checks which files mismatch. The way the mismatch is detected is as follows\n(the steps are ordered in a way where if a match/mismatch is detected, further checks\nare skipped):\n\n1. the existence of the file in both directories is checked (mismatch if missing in one),\n2. the file type is compared (mismatch if not equal),\n3. the file contents are compared, for directories this means applying the same\n   algorithm recursively, while for other file types:\n     1. the file sizes are compared (regular files only, mismatch if not equal),\n     2. the inode and device numbers they're on are compared (assumed same if numbers match),\n     3. the link targets are compared (for symlinks),\n     4. the file contents are compared (for regular files),\n     5. the target device numbers are compared (for special files).\n\n## License\n\nThis project is licensed under the GPLv3 (or later) license.\n\nAdditionally, this project incorporates the [wildmatch](https://github.com/davvid/wildmatch)\nlibrary as a submodule, which is licensed under the BSD-3-Clause license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqookei%2Fdir-diff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqookei%2Fdir-diff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqookei%2Fdir-diff/lists"}