DFetch can manage dependencies
We make products that can last 15+ years; because of this we want to be able to have all sources available
to build the entire project from source without depending on external resources.
For this, we needed a dependency manager that was flexible enough to retrieve dependencies as plain text
from various sources. svn externals, git submodules and git subtrees solve a similar
problem, but not in a VCS-agnostic way or completely user-friendly way.
We want self-contained code repositories without any hassle for end-users.
Dfetch must promote upstreaming changes, but allow for local customizations.
The problem is described thoroughly in managing external dependencies and sometimes
is also known as vendoring.
See vendoring for more information about vendoring.
Other tools that do similar things are Zephyr's West, CMake ExternalProject and other meta tools.
See alternatives for a complete list.
Getting started | Manual | Troubleshooting | Contributing
pip install dfetchpip install git+https://github.com/dfetch-org/dfetch.git#egg=dfetchThe build.yml produces installers for all major platforms. See the artifacts in the run.
- Linux
.deb&.rpm - macOS
.pkg - Windows
.msi
You can use DFetch in your Github Actions workflow to check your dependencies. The results will be uploaded to Github. Add the following to your workflow file:
jobs:
dfetch-check:
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
steps:
- name: Run Dfetch Check
uses: dfetch-org/dfetch@main
with:
working-directory: '.' # optional, defaults to project root