A language-agnostic dependency manager using Git.
Project description
Unix: Windows: Metrics: Usage:
Overview
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.
Setup
Requirements
Python 3.5+
Git 2.8+ (with stored credentials)
Installation
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
Setup
Generate a sample configuration 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
Usage
See the available commands:
$ gitman --help
Updating Dependencies
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 specified rev
Symbolically link each <location>/<name> from <root>/<link> (if specified)
Repeat for all nested working trees containing a configuration 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}'
Restoring Previous Versions
Display the specific revisions that are currently installed:
$ gitman list
Reinstall these specific versions at a later time:
$ gitman install
Deleting Dependencies
Remove all installed dependencies:
$ gitman uninstall
Revision History
1.4 (unreleased)
Allow configuration files to exist in subdirectories of the main project.
1.3 (2017/02/03)
Added init command to generate sample configuration files.
Added support for post-install scripts on dependencies.
Updated configuration format to support null for links.
1.2 (2017/01/08)
Added preliminary Windows support (@StudioEtrange).
1.1 (2017/01/06)
Added coloring to the command-line output.
Fixed issue where <dirty> could be saved as a locked revision.
1.0.2 (2016/07/28)
Moved documentation to http://gitman.readthedocs.io/.
1.0.1 (2016/05/31)
Replaced calls to git remote add origin with git remote set-url origin.
1.0 (2016/05/22)
Initial stable release.
0.11 (2016/05/10)
Removed dependency on sh to support Cygwin/MinGW/etc. on Windows.
Dropped Python 3.4 support for subprocess and *args improvements.
BREAKING: Renamed config file key dir to name.
0.10 (2016/04/14)
Added show command to display dependency and internal paths.
0.9 (2016/03/31)
Added edit command to launch the configuration file.
Depth now defaults to 5 to prevent infinite recursion.
Fixed handling of source lists containing different dependencies.
0.8.3 (2016/03/14)
Renamed to GitMan.
0.8.2 (2016/02/24)
Updated to YORM v0.6.
0.8.1 (2016/01/21)
Added an error message when attempting to lock invalid repositories.
0.8 (2016/01/13)
Switched to using repository mirrors to speed up cloning.
Disabled automatic fetching on install.
Added --fetch option on install to always fetch.
Now displaying git status output when there are changes.
0.7 (2015/12/22)
Fixed git remote rm command (@hdnivara).
Now applying the update dependency filter to locking as well.
Now only locking previous locked dependencies.
Added lock command to manually save all dependency versions.
Now requiring --lock option on update to explicitly lock dependencies.
0.6 (2015/11/13)
Added the ability to filter the dependency list on install and update.
Added --depth option to limit dependency traversal on install, update, and list.
0.5 (2015/10/20)
Added Git plugin support via: git deps.
Removed --no-clean option (now the default) on install and update.
Added --clean option to delete ignored files on install and update.
Switched to install rather than update of nested dependencies.
Added --all option on update to update all nested dependencies.
Disabled warnings when running install without locked sources.
Added --no-lock option to disable version recording.
0.4.2 (2015/10/18)
Fixed crash when running with some sources missing.
0.4.1 (2015/09/24)
Switched to cloning for initial working tree creation.
0.4 (2015/09/18)
Replaced install command with update.
Updated install command to use locked dependency versions.
Now sorting sources after a successful update.
Now requiring --force to uninstall with uncommitted changes.
Updated list command to show full shell commands.
0.3.1 (2015/09/09)
Ensures files are not needlessly reloaded with newer versions of YORM.
0.3 (2015/06/26)
Added --no-clean option to disable removing untracked files.
Added support for rev-parse dates as the dependency rev.
0.2.5 (2015/06/15)
Added --quiet option to hide warnings.
0.2.4 (2015/05/19)
Now hiding YORM logging bellow warnings.
0.2.3 (2015/05/17)
Upgraded to YORM v0.4.
0.2.2 (2015/05/04)
Specified YORM < v0.4.
0.2.1 (2015/03/12)
Added automatic remote branch tracking in dependencies.
Now requiring --force when there are untracked files.
0.2 (2015/03/10)
Added list command to display current URLs/SHAs.
0.1.4 (2014/02/27)
Fixed an outdated index when checking for changes.
0.1.3 (2014/02/27)
Fixed extra whitespace when logging shell output.
0.1.2 (2014/02/27)
Added --force argument to:
overwrite uncommitted changes
create symbolic links in place of directories
Added live shell command output with -vv argument.
0.1 (2014/02/24)
Initial release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.