• Stars
    star
    194
  • Rank 199,033 (Top 4 %)
  • Language
    Python
  • License
    MIT License
  • Created over 9 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Language-agnostic dependency manager using Git.

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 License PyPI Version PyPI Downloads

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

More Repositories

1

memegen

The free and open source API to generate memes.
Python
1,313
star
2

template-python

My template for new Python libraries.
Python
649
star
3

datafiles

A file-based ORM for Python dataclasses.
Python
197
star
4

yorm

Automatic object-YAML mapping for Python.
Python
27
star
5

verchew

System dependency version checker.
Python
25
star
6

template-python-demo

Live demo of my Python template.
Python
23
star
7

minilog

Minimalistic wrapper for Python logging.
Python
19
star
8

mine

Share application state across computers using Dropbox.
Python
17
star
9

template-django

My template for new Django projects.
Python
10
star
10

sappy

Single-page application server for end-to-end testing.
Python
10
star
11

template-flask

My template for new Flask projects.
Python
9
star
12

env-diff

Compares expected environment variables to those set in production.
Python
6
star
13

virtualboombox

Discover music playing nearby.
Python
6
star
14

dropthebeat

Music sharing using Dropbox.
Python
6
star
15

pomace

Dynamic page objects for browser automation.
Python
5
star
16

pytest-expecter

Better testing with expecter and pytest.
Python
5
star
17

battleship

Simulatation of a Battleship AI using random sampling.
Python
4
star
18

pomace-amazon

Reload your Amazon balance automatically.
Python
4
star
19

slackoff

Automatically sign out of Slack workspaces on macOS.
Python
3
star
20

coverage-space

A place to track your code coverage metrics.
Python
2
star
21

dotfiles

My shared dotfiles repository.
Shell
2
star
22

grwifi

Map of WiFi access points in Grand Rapids, Michigan.
HTML
2
star
23

gridcommand

Grid-based clone of Same Time Risk.
Python
2
star
24

memegen-flask

Flask app formerly powering https://memegen.link
Python
2
star
25

template-ruby

A template for new Ruby projects.
Python
1
star
26

crowdsorter

Crowdsource your decision making.
Python
1
star
27

enharmony

[TBD] Song matching based on textual comparison of attributes.
Python
1
star
28

mctweetyface

A Twitter bot to help name things.
Makefile
1
star
29

template-django-demo

A live demo of my Django template.
Python
1
star
30

jacebrowning.info

My personal website and blog.
CSS
1
star