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.
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)
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 main2026-10-10 11:18:13 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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
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>