Metadata-Version: 2.1
Name: metarepo
Version: 0.1.2
Summary: Git Meta Repository Manager
License: MIT
Keywords: git,repository,repo,submodules
Author: Jim Ekman
Author-email: jim@nurd.se
Requires-Python: >=3.6.1,<4.0.0
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Software Development :: Version Control
Classifier: Topic :: Software Development :: Version Control :: Git
Requires-Dist: click (>=7.1.1,<8.0.0)
Requires-Dist: colorama (>=0.4.3,<0.5.0)
Requires-Dist: gitpython (>=3.1.0,<4.0.0)
Requires-Dist: prompt-toolkit (>=3.0.7,<4.0.0)
Requires-Dist: pydantic (>=1.6.1,<2.0.0)
Requires-Dist: pyyaml (>=5.3.1,<6.0.0)
Description-Content-Type: text/markdown

# Metarepo: An alternative to git submodules

![GitHub Workflow Status](https://img.shields.io/github/workflow/status/blejdfist/git-metarepo/Python%20package)
![PyPI - License](https://img.shields.io/pypi/l/metarepo)
![PyPI](https://img.shields.io/pypi/v/metarepo)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/metarepo)

Metarepo is used to manage dependencies on other git repositories when git submodules is not sufficient.
It was inspired by the [repo](https://gerrit.googlesource.com/git-repo/) tool by Google but instead of requiring the
manifest to be stored in its own repository, it is stored in the same repository.

![Demo](https://raw.githubusercontent.com/blejdfist/git-metarepo/master/assets/demo.gif)

## Installation

```bash
# Install from PyPI
pip3 install --upgrade metarepo

# Install from git using PIP
pip3 install --upgrade git+https://github.com/blejdfist/git-metarepo
```

## Usage

You can run `metarepo` in two ways, standalone or using git. Both methods work the same and it is only a matter of personal taste.

```bash
git meta
metarepo
```

Create an initial `manifest.yml` configuration using the init command
```bash
git meta init
```

Synchronize the repositories
```bash
git meta sync
```

## Manifest structure

```yml
repos:
  - url: https://github.com/blejdfist/pycodegen
    path: tools/pycodegen
    track: master
```

| Field     | Explanation              | Required             |
| --------- | ------------------------ | :------------------: |
| url       | Git URL to clone         | Yes                  |
| path      | Where to clone the repo  | Yes                  |
| track     | What branch/tag to track | No (default: master) |

