Skip to main content

gitdep

Dependency management between git repositories made easy

About

Git-Dependencies is a tool that allows developers to establish and resolve dependencies between git projects just like it is done by a package manager.

Principles

Whether it's a scripted language or a compiled language, sometimes a build is required outside the traditional package management system (like doing an integration test between release candidates or working on bleeding edge branches), so a dependency relation must be expressed in terms of source code rather than deployed packages.

Although git-submodules works well for cloning dependencies into projects, the subdirectory approach makes it unsuitable for libraries, where dependencies are not subdirectories.

Most build systems try to solve this, but we think they shouldn't, mostly because it ties management responsibilities to software where the build is the actual star of the show. Furthermore, it will require every dependant project to use their choice of build system.

We believe that a dependency manager for source code should be simple and able to get you the dependencies that you asked, where you asked, with versioning restrictions resolved (or inform you of any conflicts) and let you decide how to handle it.

Versioning with GIT

The relation between versions (hashes and tags) is extracted from the git's internal tree, so a hash A is older than B if it A is an ancestor of B. Because of that, gitdep can also detect version conflicts when projects depend on hashes from incompatible branches.

Quickstart

  • Install gitdep through pip install --user gitdep;
  • Create a gd.txt file in the root directory of your project;
  • Express dependencies in the format: REPO_URL RELATION HASH_OR_TAG, where RELATION can be either ==, <= or >=;
  • Clone and resolve the dependencies to your clone_dir directory of choice by calling gitdep clone_dir.

The last command will clone and scan repositories recursively until the dependencies for all repositories are met.

To be easily integrated with existing tools and scripts, gitdep clone_dir will print the resulting list of cloned repositories to stdout along with their versions:

for i in $(./gd.py include/ 2>/dev/null | cut -d' ' -f2); do
    echo "Cloned repository $i"
done

Multi-resolve

For testing, one may require additional dependencies, so gitdep also supports a list of dependency files in the same format as gd.txt, just call gitdep clone_dir project_dep_file test_dep_file and it will resolve the dependencies together.

Release files for gitdep 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gitdep 0.0.2
File Size Uploaded
gitdep-0.0.2.tar.gz 5.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gitdep 0.0.2
File Interpreter ABI Platform
gitdep-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 23.0 kB

Release files / gitdep-0.0.2.tar.gz

Download URL gitdep-0.0.2.tar.gz
Size 5.3 kB
Tags Source
SHA-256 checksum
How to use checksums
80bae137753ebde3b59f224a1f6495257fcc1617ac6c8c4da1a796186d5f2fae
BLAKE2b-256 checksum
How to use checksums
4ec3ce1b97a6a2bfba4de68415dbabefba1a78a9eb65b7aa9ede555a32e67556
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/50.3.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.2

Release files / gitdep-0.0.2-py3-none-any.whl

Download URL gitdep-0.0.2-py3-none-any.whl
Size 17.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f1335033b66ebe0c56d7ac3ccea152ba9939c8e12fb2823e4211986ab6cf091b
BLAKE2b-256 checksum
How to use checksums
4495a3fd4360ce7ebb99fde54271f48b005de1d481847c8bb4cc3f9e42e54a28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/50.3.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.2

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page