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
Configuration
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
- name: fontawesome
repo: https://github.com/FortAwesome/Font-Awesome
sparse_paths:
- fonts/*
rev: master
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 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}'
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.6 (unreleased)
- Added
git svn
support. (@daniel-brosche) - Added
$GITMAN_CACHE_DISABLE
to disable repository mirrors. (@daniel-brosche)
1.5 (2018-09-08)
- Added
--keep-location
option onuninstall
. (@DavidWatkins) - Added feature to enable sparse checkouts. See the docs for further information. (@xenji)
- BREAKING: Removed confusing
--lock
option onupdate
command in favor of just using thelock
command. - BREAKING: Renamed
--no-lock
to--skip-lock
onupdate
command. - BREAKING: Renamed
--no-dirty
to--fail-if-dirty
onlist
command.
1.4 (2017-03-21)
- Allow config files to exist in subdirectories of the main project.
- Added
$GITMAN_CACHE
to customize the repository cache location.
1.3 (2017-02-03)
- Added
init
command to generate sample config files. - Added support for post-install scripts on dependencies.
- Updated config 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
withgit 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
toname
.
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 config 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 oninstall
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 onupdate
to explicitly lock dependencies.
0.6 (2015-11-13)
- Added the ability to filter the dependency list on
install
andupdate
. - Added
--depth
option to limit dependency traversal oninstall
,update
, andlist
.
0.5 (2015-10-20)
- Added Git plugin support via:
git deps
. - Removed
--no-clean
option (now the default) oninstall
andupdate
. - Added
--clean
option to delete ignored files oninstall
andupdate
. - Switched to
install
rather thanupdate
of nested dependencies. - Added
--all
option onupdate
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 withupdate
. - Updated
install
command to use locked dependency versions. - Now sorting sources after a successful
update
. - Now requiring
--force
touninstall
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 dependencyrev
.
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.