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.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.
Source Distribution
Built Distribution
File details
Details for the file GitMan-1.5.post1.tar.gz
.
File metadata
- Download URL: GitMan-1.5.post1.tar.gz
- Upload date:
- Size: 136.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/38.5.2 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01dd6511f6c5d39fe071e24b4778a0ee5ebb3e24da3affd728af2f56072696a0 |
|
MD5 | 3a298276d3984b73649d2da52f7e5d68 |
|
BLAKE2b-256 | 1e5fd78c78b79163f8003b5aee257bdba07c5fd736288c957f463890f6eae5c3 |
File details
Details for the file GitMan-1.5.post1-py3-none-any.whl
.
File metadata
- Download URL: GitMan-1.5.post1-py3-none-any.whl
- Upload date:
- Size: 37.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/38.5.2 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c2f3b48523cb1120c704b966d3e78c21724e2cd83d7734e702b4474756fee4c |
|
MD5 | 835da913e250811e9885998f823db2c6 |
|
BLAKE2b-256 | d1cc37e69be4813f5a8b316be0410d4e4f6802f72b102d49693f62869caac8e5 |