Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jacebrowning/gitman
Language-agnostic dependency manager using Git.
https://github.com/jacebrowning/gitman
command-line dependency-manager git version-control
Last synced: 6 days ago
JSON representation
Language-agnostic dependency manager using Git.
- Host: GitHub
- URL: https://github.com/jacebrowning/gitman
- Owner: jacebrowning
- License: mit
- Created: 2015-02-11T03:55:12.000Z (almost 10 years ago)
- Default Branch: main
- Last Pushed: 2024-10-31T15:13:30.000Z (about 2 months ago)
- Last Synced: 2024-12-13T11:08:10.299Z (13 days ago)
- Topics: command-line, dependency-manager, git, version-control
- Language: Python
- Homepage: https://gitman.readthedocs.io
- Size: 32.5 MB
- Stars: 199
- Watchers: 9
- Forks: 32
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
## 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](https://raw.githubusercontent.com/jacebrowning/gitman/main/docs/demo.gif)](https://asciinema.org/a/3DLos4HIU84P0AfFlZMYcgPus)
[![Linux Build](https://img.shields.io/github/actions/workflow/status/jacebrowning/gitman/main.yml?branch=main&label=linux)](https://github.com/jacebrowning/gitman/actions)
[![Windows Build](https://img.shields.io/appveyor/ci/jacebrowning/gitman/main.svg?label=windows)](https://ci.appveyor.com/project/jacebrowning/gitman)
[![Code Coverage](https://img.shields.io/codecov/c/github/jacebrowning/gitman)
](https://codecov.io/gh/jacebrowning/gitman)
[![Code Quality](https://img.shields.io/scrutinizer/g/jacebrowning/gitman.svg?label=quality)](https://scrutinizer-ci.com/g/jacebrowning/gitman/?branch=main)
[![PyPI License](https://img.shields.io/pypi/l/gitman.svg)](https://pypi.org/project/gitman)
[![PyPI Version](https://img.shields.io/pypi/v/gitman.svg?label=version)](https://pypi.org/project/gitman)
[![PyPI Downloads](https://img.shields.io/pypi/dm/gitman.svg?color=orange)](https://pypistats.org/packages/gitman)## Setup
### Requirements
- Python 3.8+
- Git 2.8+ (with [stored credentials](http://gitman.readthedocs.io/en/latest/setup/git/))### Installation
Install this tool globally with [pipx](https://pipxproject.github.io/pipx/) (or pip):
```sh
$ pipx install gitman
```
or add it to your [Poetry](https://python-poetry.org/docs/) project:```sh
$ poetry add gitman
```### Configuration
Generate a sample config file:
```sh
$ gitman init
```or manually create one (`gitman.yml` or `.gitman.yml`) in the root of your working tree:
```yaml
location: vendor/gitmansources:
- 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: mastergroups:
- name: code
members:
- framework
- trufflehog
- name: resources
members:
- fontawesome
- material-design-iconsdefault_group: code
```Ignore the dependency storage location:
```sh
$ echo vendor/gitman >> .gitignore
```## Usage
See the available commands:
```sh
$ gitman --help
```### Updating Dependencies
Get the latest versions of all dependencies:
```sh
$ 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 dependencywhere `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:
```sh
$ gitman update framework
```or named groups:
```sh
$ gitman update resources
```### Restoring Previous Versions
Display the versions that are currently installed:
```sh
$ gitman list
```Reinstall these specific versions at a later time:
```sh
$ gitman install
```### Deleting Dependencies
Remove all installed dependencies:
```sh
$ gitman uninstall
```## Resources
- [Source code](https://github.com/jacebrowning/gitman)
- [Issue tracker](https://github.com/jacebrowning/gitman/issues)
- [Release history](https://github.com/jacebrowning/gitman/blob/main/CHANGELOG.md)