Add the GitHub to Gitea migration scripts #3

Merged
JMR-dev merged 1 commits from github-migration-scripts into main 2026-10-10 11:18:13 +00:00
Owner

Adds scripts/github-migration/: the scripts that moved every non-fork JMR-dev repository from GitHub into this Gitea instance and turned GitHub into a push mirror. They are kept for re-runs and for rotating the mirror PAT, which expires on 2026-11-09.

  • migrate.py: full one-time migration (code, issues, PRs, releases, wiki, LFS). Skips anything already on Gitea.
  • verify.py: compares branch/tag shas, issue/PR/release counts, and the archived and visibility flags. Read-only.
  • repoint.py: re-points local clones at Gitea, following GitHub renames. Dry run unless --apply.
  • pushmirror.py: sync-on-commit push mirrors, created only when GitHub refs already match Gitea, so the first force-push/prune cannot delete anything.

The README covers token scopes, re-run safety, and the PAT rotation procedure.

Secret sweep before commit: an exact-value search for all 10 Secret Manager secrets and the new SSH key across the tree, the full history and the working files found nothing. gitleaks flagged only the public Gitea release-signing key fingerprint in image/gitea/Dockerfile, which is a false positive.

🤖 Generated with Claude Code

Adds `scripts/github-migration/`: the scripts that moved every non-fork JMR-dev repository from GitHub into this Gitea instance and turned GitHub into a push mirror. They are kept for re-runs and for rotating the mirror PAT, which expires on 2026-11-09. - `migrate.py`: full one-time migration (code, issues, PRs, releases, wiki, LFS). Skips anything already on Gitea. - `verify.py`: compares branch/tag shas, issue/PR/release counts, and the archived and visibility flags. Read-only. - `repoint.py`: re-points local clones at Gitea, following GitHub renames. Dry run unless `--apply`. - `pushmirror.py`: sync-on-commit push mirrors, created only when GitHub refs already match Gitea, so the first force-push/prune cannot delete anything. The README covers token scopes, re-run safety, and the PAT rotation procedure. Secret sweep before commit: an exact-value search for all 10 Secret Manager secrets and the new SSH key across the tree, the full history and the working files found nothing. gitleaks flagged only the public Gitea release-signing key fingerprint in `image/gitea/Dockerfile`, which is a false positive. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
JMR-dev added 1 commit 2026-10-10 11:18:03 +00:00
These moved every non-fork JMR-dev repository from GitHub into this Gitea
instance and made GitHub a push mirror. They are kept for re-runs and
for rotating the mirror PAT, which expires and fails silently.

- migrate.py    full one-time migration (code, issues, PRs, releases,
                wiki, LFS); skips anything already on Gitea
- verify.py     compares branch/tag shas, issue/PR/release counts, and
                the archived and visibility flags; read-only
- repoint.py    re-points local clones' JMR-dev remotes at Gitea,
                following GitHub renames; dry run unless --apply
- pushmirror.py sync-on-commit push mirrors to GitHub, created only when
                every GitHub branch and tag already matches Gitea, so
                the first force-push/prune cannot delete anything

Tokens come from the environment, sourced from Secret Manager. None
appear in these files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
JMR-dev merged commit f672019c91 into main 2026-10-10 11:18:13 +00:00
Sign in to join this conversation.