## 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/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:
```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 `<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:
```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)
Raw data
{
"_id": null,
"home_page": "https://pypi.org/project/gitman",
"name": "gitman",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "git, version control, build systems, dependency management, submodules",
"author": "Jace Browning",
"author_email": "jacebrowning@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/f0/ce/08da6bfaac90793a8429b21880ba07bc499d0c90e514dae09fd78b43c45d/gitman-3.5.2.tar.gz",
"platform": null,
"description": "## Overview\n\nGitman 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.\n\n[![Demo](https://raw.githubusercontent.com/jacebrowning/gitman/main/docs/demo.gif)](https://asciinema.org/a/3DLos4HIU84P0AfFlZMYcgPus)\n\n[![Linux Build](https://img.shields.io/github/actions/workflow/status/jacebrowning/gitman/main.yml?branch=main&label=linux)](https://github.com/jacebrowning/gitman/actions)\n[![Windows Build](https://img.shields.io/appveyor/ci/jacebrowning/gitman/main.svg?label=windows)](https://ci.appveyor.com/project/jacebrowning/gitman)\n[![Code Coverage](https://img.shields.io/codecov/c/github/jacebrowning/gitman)\n](https://codecov.io/gh/jacebrowning/gitman)\n[![Code Quality](https://img.shields.io/scrutinizer/g/jacebrowning/gitman.svg?label=quality)](https://scrutinizer-ci.com/g/jacebrowning/gitman/?branch=main)\n[![PyPI License](https://img.shields.io/pypi/l/gitman.svg)](https://pypi.org/project/gitman)\n[![PyPI Version](https://img.shields.io/pypi/v/gitman.svg?label=version)](https://pypi.org/project/gitman)\n[![PyPI Downloads](https://img.shields.io/pypi/dm/gitman.svg?color=orange)](https://pypistats.org/packages/gitman)\n\n## Setup\n\n### Requirements\n\n- Python 3.8+\n- Git 2.8+ (with [stored credentials](http://gitman.readthedocs.io/en/latest/setup/git/))\n\n### Installation\n\nInstall this tool globally with [pipx](https://pipxproject.github.io/pipx/) (or pip):\n\n```sh\n$ pipx install gitman\n```\nor add it to your [Poetry](https://python-poetry.org/docs/) project:\n\n```sh\n$ poetry add gitman\n```\n\n### Configuration\n\nGenerate a sample config file:\n\n```sh\n$ gitman init\n```\n\nor manually create one (`gitman.yml` or `.gitman.yml`) in the root of your working tree:\n\n```yaml\nlocation: vendor/gitman\n\nsources:\n - repo: \"https://github.com/kstenerud/iOS-Universal-Framework\"\n name: framework\n rev: Mk5-end-of-life\n - repo: \"https://github.com/jonreid/XcodeCoverage\"\n name: coverage\n links:\n - target: Tools/XcodeCoverage\n - repo: \"https://github.com/dxa4481/truffleHog\"\n name: trufflehog\n rev: master\n scripts:\n - chmod a+x truffleHog/truffleHog.py\n - repo: \"https://github.com/FortAwesome/Font-Awesome\"\n name: fontawesome\n rev: master\n sparse_paths:\n - \"webfonts/*\"\n - repo: \"https://github.com/google/material-design-icons\"\n name: material-design-icons\n rev: master\n\ngroups:\n - name: code\n members:\n - framework\n - trufflehog\n - name: resources\n members:\n - fontawesome\n - material-design-icons\n\ndefault_group: code\n```\n\nIgnore the dependency storage location:\n\n```sh\n$ echo vendor/gitman >> .gitignore\n```\n\n## Usage\n\nSee the available commands:\n\n```sh\n$ gitman --help\n```\n\n### Updating Dependencies\n\nGet the latest versions of all dependencies:\n\n```sh\n$ gitman update\n```\n\nwhich will essentially:\n\n1. Create a working tree at `<root>`/`<location>`/`<name>`\n2. Fetch from `repo` and checkout the specified `rev`\n3. Symbolically link each `<location>`/`<name>` from `<root>`/`<link>` (if specified)\n4. Repeat for all nested working trees containing a config file\n5. Record the actual commit SHAs that were checked out (with `--lock` option)\n6. Run optional post-install scripts for each dependency\n\nwhere `rev` can be:\n\n- all or part of a commit SHA: `123def`\n- a tag: `v1.0`\n- a branch: `main`\n- a `rev-parse` date: `'main@{2015-06-18 10:30:59}'`\n\nAlternatively, get the latest versions of specific dependencies:\n\n```sh\n$ gitman update framework\n```\n\nor named groups:\n\n```sh\n$ gitman update resources\n```\n\n### Restoring Previous Versions\n\nDisplay the versions that are currently installed:\n\n```sh\n$ gitman list\n```\n\nReinstall these specific versions at a later time:\n\n```sh\n$ gitman install\n```\n\n### Deleting Dependencies\n\nRemove all installed dependencies:\n\n```sh\n$ gitman uninstall\n```\n\n## Resources\n\n- [Source code](https://github.com/jacebrowning/gitman)\n- [Issue tracker](https://github.com/jacebrowning/gitman/issues)\n- [Release history](https://github.com/jacebrowning/gitman/blob/main/CHANGELOG.md)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A language-agnostic dependency manager using Git.",
"version": "3.5.2",
"project_urls": {
"Documentation": "https://gitman.readthedocs.io",
"Homepage": "https://pypi.org/project/gitman",
"Repository": "https://github.com/jacebrowning/gitman"
},
"split_keywords": [
"git",
" version control",
" build systems",
" dependency management",
" submodules"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "79d01984dfebef0d2ce59e14d67c0813e350e5049db2a7da96942d2c8c2a1619",
"md5": "f20b70af03e32b615c5f5d69dda0dc99",
"sha256": "a1303a9a88250a5c3f1babf4a46510a2dcc368f41d9a37f8a1bb1c202ebcfafe"
},
"downloads": -1,
"filename": "gitman-3.5.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f20b70af03e32b615c5f5d69dda0dc99",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 40598,
"upload_time": "2024-05-22T11:28:13",
"upload_time_iso_8601": "2024-05-22T11:28:13.122814Z",
"url": "https://files.pythonhosted.org/packages/79/d0/1984dfebef0d2ce59e14d67c0813e350e5049db2a7da96942d2c8c2a1619/gitman-3.5.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f0ce08da6bfaac90793a8429b21880ba07bc499d0c90e514dae09fd78b43c45d",
"md5": "d73a877d561cf90a152512c4de4f32f4",
"sha256": "51f8d8efdecd3076ac7ea16a7de415be74ef26c3a3ca8c8ef9410e32d103db67"
},
"downloads": -1,
"filename": "gitman-3.5.2.tar.gz",
"has_sig": false,
"md5_digest": "d73a877d561cf90a152512c4de4f32f4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 32987,
"upload_time": "2024-05-22T11:28:14",
"upload_time_iso_8601": "2024-05-22T11:28:14.879996Z",
"url": "https://files.pythonhosted.org/packages/f0/ce/08da6bfaac90793a8429b21880ba07bc499d0c90e514dae09fd78b43c45d/gitman-3.5.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-22 11:28:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jacebrowning",
"github_project": "gitman",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"appveyor": true,
"lcname": "gitman"
}