Profile
Back to NewsBack
GitHub Trending 2 min
Reader Mode
jacebrowning/gitman: Language-agnostic dependency manager using Git.

jacebrowning/gitman: Language-agnostic dependency manager using Git.

21 hours ago

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</a>

Linux Build</a> Windows Build</a> Code Coverage</a>
Code Quality</a> PyPI License</a> PyPI Version</a> PyPI Downloads</a>

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: - 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

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: 'main@{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

Chat with me