All Projects → jacebrowning → Gitman

jacebrowning / Gitman

Licence: other
Language-agnostic dependency manager using Git.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Gitman

Tutorials
🗒 codebar's tutorials
Stars: ✭ 231 (+66.19%)
Mutual labels:  command-line, version-control
Sampctl
The Swiss Army Knife of SA:MP - vital tools for any server owner or library maintainer.
Stars: ✭ 149 (+7.19%)
Mutual labels:  command-line, dependency-manager
Asciigraph
Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies.
Stars: ✭ 1,805 (+1198.56%)
Mutual labels:  command-line
Gossed
Push the standard output of ANY program to browsers as Server Sent Events
Stars: ✭ 138 (-0.72%)
Mutual labels:  command-line
Pony Stable
🐴 A simple dependency manager for the Pony language.
Stars: ✭ 135 (-2.88%)
Mutual labels:  dependency-manager
Liblouis
Open-source braille translator and back-translator.
Stars: ✭ 129 (-7.19%)
Mutual labels:  command-line
Git Tidy
Tidy up stale git branches.
Stars: ✭ 137 (-1.44%)
Mutual labels:  command-line
Check It Out
A command line interface for Git Checkout. See branches available for checkout.
Stars: ✭ 127 (-8.63%)
Mutual labels:  command-line
Fac
Easy-to-use CUI for fixing git conflicts
Stars: ✭ 1,738 (+1150.36%)
Mutual labels:  command-line
Entrypoint
Composable CLI Argument Parser for all modern .Net platforms.
Stars: ✭ 136 (-2.16%)
Mutual labels:  command-line
Fblog
Small command-line JSON Log viewer
Stars: ✭ 137 (-1.44%)
Mutual labels:  command-line
Cz Cli
The commitizen command line utility. #BlackLivesMatter
Stars: ✭ 12,671 (+9015.83%)
Mutual labels:  command-line
Progressbar
A really basic thread-safe progress bar for Golang applications
Stars: ✭ 2,212 (+1491.37%)
Mutual labels:  command-line
Foxy
A fast, reliable, and secure NPM/Yarn bridge for Composer
Stars: ✭ 137 (-1.44%)
Mutual labels:  dependency-manager
Commandlineutils
Command line parsing and utilities for .NET
Stars: ✭ 1,782 (+1182.01%)
Mutual labels:  command-line
Bashacks
Set of functions to increase productivity while hacking with Bash
Stars: ✭ 138 (-0.72%)
Mutual labels:  command-line
Sty
String styling for your terminal.
Stars: ✭ 129 (-7.19%)
Mutual labels:  command-line
The Way
A command line code snippets manager
Stars: ✭ 132 (-5.04%)
Mutual labels:  command-line
Cherchord
🎸 Find chords for any string instrument quicky & easily 🎸
Stars: ✭ 137 (-1.44%)
Mutual labels:  command-line
Shpotify
A command-line interface to Spotify.
Stars: ✭ 1,782 (+1182.01%)
Mutual labels:  command-line

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:
  - 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.git
    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 <root>/<location>/<name>
  2. Fetch from repo and checkout the specified rev
  3. Symbolically link each <location>/<name> from <root>/<link> (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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].