Metadata-Version: 2.1
Name: polyrepo
Version: 0.1.2
Summary: Keep repos organized locally the same as on GitLab
Author-email: Steampunk Wizard <polyrepo@steampunkwizard.ca>
License: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown

PolyRepo
========

Work with multiple repos in GitLab.

Manage a collection of repos in a directory/subdirectory structure that matches the group/subgroup structure in GitLab.

Usage (proposed):

```
polyrepo sync steampunk-wizard
```

In a subdirectory called steampunk-wizard, clone all its subgroups and projects.

If a subdirectory doesn't exist, create it to hold the clone.

If a subdirectory exists for a project:

1. Confirm that the default git remote points to the correct path in GitLab
2. Fetch everything, including tags

If a subdirectory exists that does NOT correspond to a GitLab repo, remove it?

Output in text

```
/steampunk-wizard/busy                 Created
/steampunk-wizard/labcrawler           Disjoin
/steampunk-wizard/mypyref              Correct  Changed  
/steampunk-wizard/sandbox/ci-sandbox   Fetched
/steampunk-wizard/sandbox/play-around  Missing
```

Statuses:

- **Created** The repo did not previously exist locally, and now has been cloned and fetched.
- **Fetched** The repo did exist, and has been fetched
- **Correct** Was already up to date; no changes
- **Missing** There is no repo in GitLab, but there's a local folder with content
- **Disjoin** A local directory exists, but either isn't a git repo or has the wrong default remote

Then **Changed** means local changes exist, which could include

- Local branches still to be pushed
- Commits in a branch beyond what was fetched
- Local changes to be committed

Note that PolyRepo doesn't pull or merge anything, doesn't touch the working directory except in the case of creation, and ...

There's a .polyrepo file (optional) to specify the subgroups/repos to consider.

Questions

- How to handle moves of repos between namespaces?
- Any operation to polyrepo every namespace the user can access?
