Language-agnostic dependency manager using Git.
MIT License
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.
Install this tool globally with pipx (or pip):
$ pipx install gitman
or add it to your Poetry project:
$ poetry add gitman
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:
- repo: "https://github.com/kstenerud/iOS-Universal-Framework"
name: framework
rev: Mk5-end-of-life
- repo: "https://github.com/jonreid/XcodeCoverage"
name: coverage
links:
- target: Tools/XcodeCoverage
- repo: "https://github.com/dxa4481/truffleHog"
name: trufflehog
rev: master
scripts:
- chmod a+x truffleHog/truffleHog.py
- repo: "https://github.com/FortAwesome/Font-Awesome"
name: fontawesome
rev: master
sparse_paths:
- "webfonts/*"
- repo: "https://github.com/google/material-design-icons"
name: material-design-icons
rev: master
groups:
- name: code
members:
- framework
- trufflehog
- name: resources
members:
- fontawesome
- material-design-icons
default_group: code
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:
<root>
/<location>
/<name>
repo
and checkout the specified rev
<location>
/<name>
from <root>
/<link>
(if specified)--lock
option)where rev
can be:
123def
v1.0
main
rev-parse
date: 'main@{2015-06-18 10:30:59}'
Alternatively, get the latest versions of specific dependencies:
$ gitman update framework
or named groups:
$ gitman update resources
Display the versions that are currently installed:
$ gitman list
Reinstall these specific versions at a later time:
$ gitman install
Remove all installed dependencies:
$ gitman uninstall