Skip to content

nta/gdm

 
 

Repository files navigation

Build Status Coverage Status Scrutinizer Code Quality PyPI Version PyPI Downloads

Getting Started

Git Dependency Manager (gdm) is a language-agnostic "dependency manager" using Git. It aims to serve as a submodules replacement and provides advanced options for managing versions of nested Git repositories.

Requirements

  • Python 3.4+
  • Latest version of Git (with stored credentials)
  • OSX/Linux (with a decent shell for Git)

Installation

gdm can be installed with pip:

$ pip install gdm

or directly from the source code:

$ git clone https://github.com/jacebrowning/gdm.git
$ cd gdm
$ python setup.py install

Setup

Create a configuration file (gdm.yml or .gdm.yml) in the root of your working tree:

location: .gdm
sources:
- repo: https://github.com/kstenerud/iOS-Universal-Framework
  dir: framework
  rev: Mk5-end-of-life
- repo: https://github.com/jonreid/XcodeCoverage
  dir: coverage
  rev: master
  link: Tools/XcodeCoverage

Ignore the dependency storage location:

$ echo .gdm >> .gitignore

Basic Usage

See the available commands:

$ gdm --help

Updating Dependencies

Get the latest versions of all dependencies:

$ gdm update

which will essentially:

  1. create a working tree at root/location/dir
  2. fetch from repo and checkout the specified rev
  3. symbolically link each location/dir from root/link (if specified)
  4. repeat for all nested working trees containing a configuration file
  5. record the actual commit SHAs that were checked out (with --lock option)

where rev can be:

  • all or part of a commit SHA: 123def
  • a tag: v1.0
  • a branch: master
  • a rev-parse date: 'develop@{2015-06-18 10:30:59}'

Restoring Previous Versions

Display the specific revisions that are currently installed:

$ gdm list

Reinstall these specific versions at a later time:

$ gdm install

Deleting Dependencies

Remove all installed dependencies:

$ gdm uninstall

Advanced Options

See the full documentation at git-dependency-manager.info.

About

Language-agnostic "dependency manager" using Git.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 89.9%
  • Makefile 10.1%