Need help with gitman?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

jacebrowning
146 Stars 26 Forks Other 737 Commits 21 Opened issues

Description

Language-agnostic dependency manager using Git.

Services available

!
?

Need anything else?

Contributors list

# 58,972
Markdow...
microfr...
seleniu...
Visual ...
455 commits
# 420,587
opc-ua
Shell
python3
Git
45 commits
# 281,531
CSS
HTML
error-m...
batch-p...
12 commits
# 200,013
C
Docker
syslog
Git
10 commits
# 548,342
version...
Git
depende...
C++
6 commits
# 637,825
Python
version...
Git
depende...
5 commits
# 603,487
C++
gazebo
Shell
C
3 commits
# 741,756
Python
version...
Git
depende...
3 commits
# 471,213
nvim
viml
Neovim
Python
1 commit
# 130,176
solidit...
Django
Electro...
sketchi...
1 commit
# 142,671
Rust
cython
algebra
gfx
1 commit
# 549,406
OCaml
Shell
Git
TypeScr...
1 commit
# 33,373
PHP
yii2-wi...
Yii Fra...
yii2
1 commit

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.

Demo

Unix Build Status Windows Build Status Coverage Status Scrutinizer Code Quality PyPI Version PyPI License

Setup

Requirements

Installation

Install this tool globally with pipx (or pip):

$ pipx install gitman

or add it to your Poetry project:

$ poetry add gitman

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:

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

Usage

See the available commands:

$ gitman --help

Updating Dependencies

Get the latest versions of all dependencies:

$ gitman update

which will essentially:

  1. Create a working tree at
    /
    /
    
    
  2. Fetch from
    repo
    and checkout the specified
    rev
  3. Symbolically link each
    /
     from 
    /
     (if specified)
  4. Repeat for all nested working trees containing a config file
  5. Record the actual commit SHAs that were checked out (with
    --lock
    option)
  6. 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:
    main
  • a
    rev-parse
    date:
    '[email protected]{2015-06-18 10:30:59}'

Alternatively, get the latest versions of specific dependencies:

$ gitman update framework

or named groups:

$ gitman update resources

Restoring Previous Versions

Display the versions that are currently installed:

$ gitman list

Reinstall these specific versions at a later time:

$ gitman install

Deleting Dependencies

Remove all installed dependencies:

$ gitman uninstall

Resources

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.