Skip to main content

Batch-migrate repositories between GitHub and Gitea from a Textual TUI

Project description

migtea

Batch-migrate repositories between GitHub and Gitea from a terminal UI. migtea (migrate to Gitea) is a Textual TUI that drives the official gh and tea CLIs: it preflights both tools, diffs your GitHub account against a Gitea instance, lets you tick the repositories that are missing, totals their sizes, and migrates each one (wiki, LFS, issues, and more) with per-repo and overall progress.

Website: botmonster.com/migtea

Run it with no install:

uvx migtea

Why

Gitea's web "New Migration" page moves exactly one repository per submission. The engine behind it has no such limit, and neither does the tea CLI's tea repos migrate. migtea orchestrates that CLI across every repository you select, so moving a whole account is one pass instead of one form per repo.

Requirements

migtea does not bundle or install these; it uses whatever is already on your PATH, installed the official way:

  • GitHub CLI (gh), logged in (gh auth login).
  • Gitea CLI (tea), with at least one login configured (tea login add).
  • uv to run uvx migtea (or pip install migtea).
  • git is additionally required for the reverse (Gitea to GitHub) direction.

If a tool or login is missing, migtea's preflight screen prints the exact official command to fix it and waits for you to re-check. It never pipes a script into your shell and never installs anything itself.

What it does

  1. Preflight — confirms gh and tea are present and authenticated.
  2. Compare — inventories both accounts and buckets every repository into missing on the target or already there.
  3. Select — a checkbox list with a filter and fork/archived toggles; repos that already exist on the target are dimmed and unselectable.
  4. Confirm — shows the count and total size you are about to move.
  5. Migrate — runs the migration per repository with a per-repo bar and a size-weighted total bar, streaming results to a log pane.

Directions

Direction How Transfers Does not transfer
GitHub → Gitea (default) tea repos migrate --service github Code, wiki, LFS, issues, labels, milestones, releases, pull requests GitHub Actions history, Projects, Discussions, stars, webhooks, branch protection
Gitea → GitHub git clone --mirrorgh repo creategit push --mirror Code, all branches and tags, best-effort wiki Issues and pull requests (GitHub has no import API)

Pass --direction gitea-to-github to reverse, or press d in the UI to flip.

Authentication

migtea never reads, prints, logs, or stores any token. GitHub auth is delegated to gh; Gitea auth is delegated to tea. For private GitHub repositories, migtea hands the output of gh auth token straight to tea's --auth-token flag in memory so Gitea can clone them; the value never touches disk or the log.

Options

migtea [--direction {github-to-gitea,gitea-to-github}] [--dry-run] [--version]

--dry-run walks the entire flow but replaces the migration call with an existence check, so you can rehearse safely before moving anything.

License

Apache-2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

migtea-0.1.0.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

migtea-0.1.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file migtea-0.1.0.tar.gz.

File metadata

  • Download URL: migtea-0.1.0.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for migtea-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9923ee3e15fc76afc6e21208ac3442dda90e8b40955dbbf6b2cc07054bee33b7
MD5 d67418ac4222d33024160d53f280d27b
BLAKE2b-256 41c0d6707ed3b3680a53356e0f4012da26a0510821acef61fe101a869f4fcfd6

See more details on using hashes here.

Provenance

The following attestation bundles were made for migtea-0.1.0.tar.gz:

Publisher: publish.yml on botmonster/migtea

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file migtea-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: migtea-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for migtea-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 44f8994a574797b9d0904240fcd5aacff691ced62ab1bb50c0ac88da0dd796d4
MD5 55b200b07f506dcdf0dd56240e142dbe
BLAKE2b-256 feee594c3ac816362d971d27906577e687da22a91a16f8b9fa7dc6042fe364e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for migtea-0.1.0-py3-none-any.whl:

Publisher: publish.yml on botmonster/migtea

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page