GitHub’s dependency graph builds a tree of information about the packages your repository’s code depends on. This capability powers SBOM generation, Dependabot security updates, and more.
There are three ways dependency graph learns about dependencies: static analysis, automatic submission, and user submission. Since a repository may have more than one of these methods configured, dependency graph could scan the same package manifest multiple times, with each scan producing different output.
In order to reduce confusion and prioritize accurate information, dependency graph now has deduplication logic with well-defined precedence rules:
- Dependency graph only displays one instance of each manifest file.
- User submissions take the highest priority, because they are usually created during artifact builds and have the most complete information. If there are multiple manual snapshots from different detectors, dependency graph sorts alphabetically by correlator (a unique identifier used to match related data) and keep the first one.
- Automatic submissions have the next-highest precedence since they are also based on builds but aren’t submitted by users.
- Static analysis takes the lowest precedence.
For more information, check out the dependency graph documentation.