Unix: Windows:
Metrics:
Usage:
GitMan 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.
- Python 3.5+
- Git 2.8+ (with stored credentials)
Install GitMan with pip:
$ pip install gitman
or directly from the source code:
$ git clone https://github.com/jacebrowning/gitman.git
$ cd gitman
$ python setup.py install
Generate a sample config file:
$ gitman init
or manually create one (gitman.yml
or .gitman.yml
) in the root of your working tree:
location: vendor/gitman
sources:
- name: framework
repo: https://github.com/kstenerud/iOS-Universal-Framework
rev: Mk5-end-of-life
- name: coverage
repo: https://github.com/jonreid/XcodeCoverage
rev: master
link: Tools/XcodeCoverage
- name: trufflehog
repo: https://github.com/dxa4481/truffleHog
rev: master
scripts:
- chmod a+x truffleHog.py
Ignore the dependency storage location:
$ echo vendor/gitman >> .gitignore
See the available commands:
$ gitman --help
Get the latest versions of all dependencies:
$ gitman update
which will essentially:
- Create a working tree at
<root>
/<location>
/<name>
- Fetch from
repo
and checkout the specifiedrev
- Symbolically link each
<location>
/<name>
from<root>
/<link>
(if specified) - Repeat for all nested working trees containing a config file
- Record the actual commit SHAs that were checked out (with
--lock
option) - Run optional post-install scripts for each dependency
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}'
Display the specific revisions that are currently installed:
$ gitman list
Reinstall these specific versions at a later time:
$ gitman install
Remove all installed dependencies:
$ gitman uninstall