{"id":28947268,"url":"https://github.com/wildfly/dist-diff","last_synced_at":"2026-07-02T18:32:19.555Z","repository":{"id":293454131,"uuid":"979417251","full_name":"wildfly/dist-diff","owner":"wildfly","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-21T13:32:43.000Z","size":267,"stargazers_count":1,"open_issues_count":1,"forks_count":2,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-04-21T15:32:57.121Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wildfly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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":"dco.txt","cla":null},"funding":{"github":"commonhaus","open_collective":"commonhaus-foundation"}},"created_at":"2025-05-07T13:32:22.000Z","updated_at":"2026-02-02T06:39:32.000Z","dependencies_parsed_at":"2025-07-15T00:09:22.935Z","dependency_job_id":"630809af-2c2e-4fc0-b77b-eff85d0542ca","html_url":"https://github.com/wildfly/dist-diff","commit_stats":null,"previous_names":["wildfly/dist-diff"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/wildfly/dist-diff","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildfly%2Fdist-diff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildfly%2Fdist-diff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildfly%2Fdist-diff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildfly%2Fdist-diff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wildfly","download_url":"https://codeload.github.com/wildfly/dist-diff/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildfly%2Fdist-diff/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35059163,"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-07-02T02:00:06.368Z","response_time":173,"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":"2025-06-23T09:09:52.574Z","updated_at":"2026-07-02T18:32:19.376Z","avatar_url":"https://github.com/wildfly.png","language":"Java","funding_links":["https://github.com/sponsors/commonhaus","https://opencollective.com/commonhaus-foundation"],"categories":[],"sub_categories":[],"readme":"# Dist-diff2\nDist-diff2 compares two distributions of Java based applications. Prepares report about differences between provided distributions.\nResults are reported as txt, html and xml files for easier and faster analysis.\n\nReport contains:\n\n * Information about added files and folders\n * Information about removed files and folders\n * Information about different files and folders\n * Analysis of different files (compares XML files at DOM level, jar file at API level, ...)\n\n### How to execute\nHere is the list of arguments and options that can be passed to the tool. Some of them are further explained below.\n\n```\n  Options \"-a (--folderA)\" and \"-b (--folderB)\" are required\n\n  DistDiff2 -- comparison tool for Java based applications\n\n  --added VAL                          : Path to file containing a list of\n                                         expected added files. The default value\n                                         is 'expected-added-files.txt'\n  --decompile-all                      : Decompile ALL classes (even those which\n                                         changed the API). Must be used together\n                                         with -d/--decompile (default: false)\n  --modified VAL                       : Path to file containing a list of\n                                         expected modified files. The default\n                                         value is 'expected-modified-files.txt'\n  --precise-exclusion-matching         : Use precise matching when comparing\n                                         artifacts from report with files in\n                                         exclusion list. With this option\n                                         enabled, files won't be treated as\n                                         included in exclusion list if any of\n                                         their parent directory is already\n                                         included in file exclusion list. In\n                                         other words you need to specify each\n                                         file explicitly to be excluded from the\n                                         comparison despite it's parent\n                                         directory. (default: false)\n  --removed VAL                        : Path to file containing a list of\n                                         expected removed files. The default\n                                         value is 'expected-removed-files.txt'\n  --xml-lenient-compare                : If set to true, then different ordering\n                                         of the elements between relevant XML\n                                         files will not be considered as a\n                                         difference. (default: false)\n  -C (--binary-comparison-instruction) : Performs also comparison of binary\n                                         executable files. If two binary files\n                                         differ, dist-diff will try to decompile\n                                         those with 'objdump --disassemble' tool\n                                         and show different parts in the report.\n                                         In this case only differences in tables\n                                         that are supposed to contain actual\n                                         instructions are compared. NOTE: this\n                                         feature is available only on Linux\n                                         based machines with installed 'objdump'\n                                         utility. Also note that by binary\n                                         executable we mean only executable\n                                         files and static and dynamic libraries,\n                                         not archives or pictures. (default:\n                                         false)\n  -a (--folderA) DIR                   : Folder with distribution A\n  -b (--folderB) DIR                   : Folder with distribution B\n  -c (--binary-comparison)             : Performs also comparison of binary\n                                         executable files. If two binary files\n                                         differ, dist-diff will try to decompile\n                                         those with 'objdump --all-headers\n                                         --disassemble-all' tool and show\n                                         different parts in the report. So there\n                                         is made diff from the whole binary\n                                         content. NOTE: this feature is\n                                         available only on Linux based machines\n                                         with installed 'objdump' utility. Also\n                                         note that by binary executable we mean\n                                         only executable files and static and\n                                         dynamic libraries, not archives or\n                                         pictures. (default: false)\n  -d (--decompile)                     : Try to decompile classes from inspected\n                                         JARs (it is done only for classes which\n                                         didn't change the API). WARNING: this\n                                         slows down execution quite heavily!\n                                         (default: false)\n  -f (--permissions)                   : Compare file permission attributes\n                                         differences (default: false)\n  -h (--improved-hashing)              : [DEPRECATED] Use the improved hashing\n                                         function for directory comparison\n                                         (ignores poms, manifests and\n                                         timestamps). To be used along with -p;\n                                         not used by productization anymore\n                                         (default: false)\n  -i (--ignore-same-items)             : Do not report same items (report only\n                                         those which are changed somehow)\n                                         (default: false)\n  -o (--output) DIR                    : Output directory for reports (default:\n                                         output)\n  -p (--patching)                      : Enables support for patching mechanism,\n                                         make sure that '-a' points\n                                         to the freshly unzipped NEW version and\n                                         '-b' points to the OLD version with a\n                                         patch applied (which updated it to the\n                                         NEW version) (default: false)\n  -r (--rpm)                           : RPM support (default: false)\n  -s (--from-sources)                  : Expect that one or both the\n                                         distributions were built from sources\n                                         rather than productized, therefore some\n                                         additional MANIFEST.MF attributes will\n                                         be expected to be different (default:\n                                         false)\n  -x (--xml-as-text)                   : Parse all xml files as text file.\n                                         (default: false)\n\n  DistDiff2 version: 1.0.2-SNAPSHOT\n```\n\n\n\n\nExample: `java -jar dist-diff2-jar-with-dependencies.jar -a 611/er3 -b 611/er3 -i`\n\n### How to compile\n\n    mvn clean install\n\nDistribution is copied as `dist-diff2-$VERSION-jar-with-dependencies.jar` into your local Maven repository.\n\n### How it works\n * Takes two basic parameters which represent folders of compared distributions\n * Calculates added and missing files\n * Prepares list of artifacts and executes concrete phases on this list\n * Calculates MD5 sum for all artifacts\n * Calls registered phases\n * Generates XML report\n * Executes XSLT on prepared XML report and generates other output formats\n\n### How to implement a new extension\n * Extend `org.wildfly.qa.distdiff2.phase.ProcessPhase`\n * Register your extension in `org.wildfly.qa.distdiff2.DistDiff2Main#main` method\n\n### Dist-diff2 with respect to the patching mechanism\n * Enable using the option `-p` or `--patching`\n * Make sure that\n   * `-a` points to the freshly unzipped NEW version\n   * `-b` points to the OLD version with a patch applied (which updated it to the NEW version)\n   * [DEPRECATED] `-h` activates the improved hashing mechanism (excluding rebuilds of `jboss-as-*` modules which don't change anything).\n     * This is kept just in case that this approach will be used again some time in the future.\n\n### RPM support\n * Enable using the option `-r` or `--rpm`\n * With RPM support enabled, dist-diff2 tries to 'deversionize' jars, because in a RPM-installed distribution, version strings are stripped from the jars\n   * eg. `jboss-remoting-3.2.19.GA.jar` becomes `jboss-remoting.jar`\n * With RPM support enabled, always make sure that\n   * `-a` points to the ZIP distribution\n   * `-b` points to the root of the RPM distribution (`/usr/share/jbossas`|`/opt/rh/eap7/root/usr/share/wildfly`)\n * About mapping from filenames in ZIP to filenames in RPM:\n   * most of the time, dist-diff2 will be able to deduce the RPM filename automatically\n   * but there are some cases where jars don't follow the standard naming rules. You can put such exceptions into the\n     file `zip-to-rpm-filename-mapping.properties` in the current working directory from where you run `dist-diff2`.\n     The format is `FILENAME_IN_ZIP=FILENAME_IN_RPM`, for example:\n     * `jbossws-cxf-resources-4.2.4.Final-jboss720.jar=jbossws-cxf-resources-jboss720.jar`\n\n### File Permissions changes\n * Add `-f` or `--permissions` flag.\n * Supports POSIX style permissions (rwx) and generic permissions on unsupported filesystems.\n\n### Jar Decompile process\n * For Java class decompilation process there is used [third-party library - CFR](http://www.benf.org/other/cfr/) as a maven dependency.\n\n## Releasing a new version\nPlease note that the prerequisites are:\n- Read/write permission to the repo configured in `pom.xml` `scm` tag.\n- Git must be configured to GPG-sign commits (`git config commit.gpgsign true`). The maven-release-plugin creates commits that must be signed.\n- The `gpg-agent` must be running and your passphrase must be cached (e.g. by running `gpg --sign --detach-sign \u003cfile\u003e` beforehand).\n\n1. Create a new branch for the release (e.g. `git checkout -b release/x.y.z`).\n2. `mvn release:clean`\n3. `mvn release:prepare` — if the process fails here, revert using `mvn release:rollback`.\n4. `mvn release:perform`\n5. Create a pull request from the release branch to `main`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwildfly%2Fdist-diff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwildfly%2Fdist-diff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwildfly%2Fdist-diff/lists"}