Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKhFj1S3UdD6xL2fbWPeYj
41 lines
1.7 KiB
Markdown
41 lines
1.7 KiB
Markdown
# Issue-Migration Gitea → GitLab (gitops#48)
|
|
|
|
`migrate.py` überführt Issues (offen **und** geschlossen, inkl. Kommentare)
|
|
eines Gitea-Repos in ein bestehendes GitLab-Projekt. Einmal-Werkzeug für den
|
|
#48-Cutover; hier versioniert wegen Reproduzierbarkeit.
|
|
|
|
## Eigenschaften
|
|
|
|
- **Dry-Run per Default**, `--execute` schreibt wirklich
|
|
- **Idempotent** über Marker `<!-- gitea-migration: OWNER/REPO#N -->` in der
|
|
Ziel-Beschreibung — Wiederholungsläufe überspringen Migriertes
|
|
- **Zeitstempel bleiben erhalten** (Admin-Token darf `created_at` setzen);
|
|
Autorschaft läuft auf den Token-User, Original-Autor+Datum stehen im
|
|
Migrations-Fußtext bzw. Kommentar-Präfix (bekannter, akzeptierter Verlust)
|
|
- Labels namensgleich (Gruppen-Labels müssen vorher existieren — Stand
|
|
2026-08-01 sind die 9 Gitea-Labels + 5 `host:*` als Gruppe-13-Labels angelegt)
|
|
- PRs werden ausgefiltert, geschlossene Issues nach Anlage geschlossen
|
|
|
|
## Aufruf
|
|
|
|
```
|
|
python3 migrate.py sorb/<repo> <gitlab-projekt-id> # Dry-Run
|
|
python3 migrate.py sorb/<repo> <gitlab-projekt-id> --execute
|
|
```
|
|
|
|
Tokens: `~/.config/gitea-rohana/token` (read:issue) und
|
|
`~/.config/gitlab-lab/token` (Admin) auf dem Mac.
|
|
|
|
## Stand
|
|
|
|
| Repo | Ziel | Status |
|
|
|---|---|---|
|
|
| sorb/thread-net-git | Projekt 18 | ✅ migriert 2026-08-01 (Testlauf, 1 Issue, verifiziert) |
|
|
| sorb/threadnet-call | Projekt 19 | ausstehend |
|
|
| sorb/ThreadNet-Web | Projekt 16 | ausstehend |
|
|
| sorb/axion1337.chat-gitops | Projekt 20? | ausstehend — größter Brocken, zuletzt |
|
|
|
|
**Cutover-Nachschritte** (erst nach vollständiger Migration, siehe gitops#48):
|
|
Gitea-Issues schließen/als migriert markieren, Doku-Verweise umbiegen
|
|
(CLAUDE.md-Topologieregel!), TURN-Rotations-Hinweis, Bot-/Token-Workflows.
|