gitman


Namegitman JSON
Version 3.5 PyPI version JSON
download
home_pagehttps://pypi.org/project/gitman
SummaryA language-agnostic dependency manager using Git.
upload_time2024-04-27 21:52:51
maintainerNone
docs_urlNone
authorJace Browning
requires_python<4.0,>=3.8
licenseMIT
keywords git version control build systems dependency management submodules
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            ## 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)

[![Build Status](https://img.shields.io/github/actions/workflow/status/jacebrowning/gitman/main.yml?branch=main)](https://github.com/jacebrowning/gitman/actions)
[![Code Coverage](https://img.shields.io/codecov/c/gh/jacebrowning/gitman)](https://codecov.io/gh/jacebrowning/gitman)
[![Code Quality](https://img.shields.io/scrutinizer/g/jacebrowning/gitman.svg?label=quiality)](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/48/7e/65bdd05bccd3fa8c9e7ba3472c651afc959c3ef4faf9fd76bf1f88a4581d/gitman-3.5.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[![Build Status](https://img.shields.io/github/actions/workflow/status/jacebrowning/gitman/main.yml?branch=main)](https://github.com/jacebrowning/gitman/actions)\n[![Code Coverage](https://img.shields.io/codecov/c/gh/jacebrowning/gitman)](https://codecov.io/gh/jacebrowning/gitman)\n[![Code Quality](https://img.shields.io/scrutinizer/g/jacebrowning/gitman.svg?label=quiality)](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",
    "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": "9083008483e38513f99f998099961600dda74c459fc471ea123de1bd4f79dd13",
                "md5": "9839edff2c61880fdfa9b9ba1b616224",
                "sha256": "8e882ddc7ee1e3aa4924c180f6468064a3cbd98964a06eb9d42a145617307970"
            },
            "downloads": -1,
            "filename": "gitman-3.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9839edff2c61880fdfa9b9ba1b616224",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.8",
            "size": 40798,
            "upload_time": "2024-04-27T21:52:49",
            "upload_time_iso_8601": "2024-04-27T21:52:49.586134Z",
            "url": "https://files.pythonhosted.org/packages/90/83/008483e38513f99f998099961600dda74c459fc471ea123de1bd4f79dd13/gitman-3.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "487e65bdd05bccd3fa8c9e7ba3472c651afc959c3ef4faf9fd76bf1f88a4581d",
                "md5": "f0a43f112cc484e43a65c09ffd2e8ea3",
                "sha256": "3739e080ac1a9745242a785815f6d962387b8ff3916bd69100b3d4a9a8b7e00f"
            },
            "downloads": -1,
            "filename": "gitman-3.5.tar.gz",
            "has_sig": false,
            "md5_digest": "f0a43f112cc484e43a65c09ffd2e8ea3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.8",
            "size": 33113,
            "upload_time": "2024-04-27T21:52:51",
            "upload_time_iso_8601": "2024-04-27T21:52:51.484081Z",
            "url": "https://files.pythonhosted.org/packages/48/7e/65bdd05bccd3fa8c9e7ba3472c651afc959c3ef4faf9fd76bf1f88a4581d/gitman-3.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-27 21:52:51",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jacebrowning",
    "github_project": "gitman",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "lcname": "gitman"
}
        
Elapsed time: 0.24235s