Files
management/verfahren/issue-migration/README.md
T
Thore CimbalandClaude Fable 5 0f3f155bc5 Umzug ins Lab: git.lab kanonisch, Gitea wird Push-Mirror; Migrations-Stand komplett
- README: Repo-Topologie-Abschnitt (git.lab = Quelle der Wahrheit, nie direkt
  zu Gitea pushen); Ausnahme Deploy-Uebergabe-Issues bleiben auf dem Gitea-Tracker
  (CFGMON erreicht git.lab nicht)
- issue-migration: alle 4 Repos migriert (62 Issues), gitops-Nummernverschiebung
  dokumentiert, Cutover-Stand

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PKhFj1S3UdD6xL2fbWPeYj
2026-08-01 12:00:00 +00:00

48 lines
2.2 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 | ✅ 2026-08-01 (1 Issue, nummerngleich) |
| sorb/threadnet-call | Projekt 19 | ✅ 2026-08-01 (2 Issues, nummerngleich) |
| sorb/ThreadNet-Web | Projekt 16 | ✅ 2026-08-01 (9 Issues, nummerngleich) |
| sorb/axion1337.chat-gitops | Projekt 17 | ✅ 2026-08-01 (50 Issues, **Nummern verschoben**) |
⚠️ **gitops-Nummern sind NICHT deckungsgleich**: Gitea hatte Lücken (PRs zählen
mit), GitLab vergibt lückenlos — z. B. Gitea#48 → GitLab#46, Gitea#51 → GitLab#49,
Gitea#52 → GitLab#50. Die verbindliche Zuordnung steht im Migrations-Fußtext
jedes GitLab-Issues (`Migriert aus Gitea …#N`); alte Commit-/Doku-Verweise auf
„gitops#N" meinen die **Gitea**-Nummer.
**Cutover-Nachschritte** (siehe gitops#48): Gitea-Issues schließen/als migriert
markieren ✅ 2026-08-01, Doku-Verweise umgebogen (CLAUDE.md-Topologieregel) ✅,
Milestones wurden nicht migriert (akzeptierter Verlust, gitops hatte keine
aktiven), Bot-/Token-Workflows (claude-issues → GitLab-Äquivalent) offen.