issues.json | ||
milestones.json | ||
README.md |
Anleitung: Issues und Meilensteine zwischen Forgejo-Repositories übertragen
Voraussetzungen
-
API-Token erstellen: Generiere persönliche Zugriffstoken für beide Forgejo-Repositories (Quell- und Zielrepo).
- Gehe zu deinem Profil >
Einstellungen
>Anwendungen
>Token generieren
. - Besuche dazu: https://git.rpi-virtuell.de/user/settings/applications.
- Setze folgende Berechtigungen:
- Issue:
Lesen und Schreiben
- Repository:
Lesen und Schreiben
(falls Meilensteine angelegt werden müssen)
- Issue:
- Notiere das Token sicher als ZUGRIFFS_TOKEN.
- Gehe zu deinem Profil >
-
Tools installieren:
- Richte eine virtuelle Python-Umgebung ein:
python3 -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows
- Installiere die benötigten Pakete:
pip install requests
- Stelle sicher, dass
curl
undjq
installiert sind (für Linux/MacOS):sudo apt install curl jq # Ubuntu/Debian brew install curl jq # macOS
- Installiere Visual Studio Code (falls nicht bereits vorhanden):
- Download VS Code
- Füge die Erweiterung Python hinzu.
- Richte eine virtuelle Python-Umgebung ein:
Schritt 1: Meilensteine aus dem Quellrepository exportieren
-
API-Endpoint nutzen:
- Führe folgenden Befehl aus, um die Meilensteine als JSON herunterzuladen:
curl -H "Authorization: token ZUGRIFFS_TOKEN" \ -H "Content-Type: application/json" \ "https://forgejo.example.com/api/v1/repos/SOURCE_USER/SOURCE_REPO/milestones" > milestones.json
- Führe folgenden Befehl aus, um die Meilensteine als JSON herunterzuladen:
-
JSON-Daten prüfen:
- Öffne die Datei
milestones.json
und überprüfe, ob alle relevanten Meilensteine korrekt exportiert wurden.
- Öffne die Datei
Schritt 2: Issues aus dem Quellrepository exportieren
-
Issues herunterladen:
- Führe folgenden Befehl aus, um alle Issues herunterzuladen (inkl. geschlossener):
curl -H "Authorization: token ZUGRIFFS_TOKEN" \ -H "Content-Type: application/json" \ "https://forgejo.example.com/api/v1/repos/SOURCE_USER/SOURCE_REPO/issues?state=all" > issues.json
- Führe folgenden Befehl aus, um alle Issues herunterzuladen (inkl. geschlossener):
-
JSON-Daten prüfen und bereinigen:
- Öffne die Datei
issues.json
in einem Editor wie Visual Studio Code. - Stelle sicher, dass die Labels als Array von Strings vorliegen, z. B.:
"labels": ["bug", "enhancement"]
- Entferne alle ungültigen Zeichen oder fehlerhaften Strukturen, die das Parsen behindern könnten.
- Prüfe, ob das JSON korrekt formatiert ist, z. B. mit einem JSON-Validator.
- Öffne die Datei
Schritt 3: Daten lokal bearbeiten
-
Meilensteine anpassen:
- Öffne
milestones.json
in Visual Studio Code oder einem Texteditor deiner Wahl. - Ändere Felder wie
title
,description
oderdue_on
bei Bedarf.
- Öffne
-
Issues bearbeiten:
- Öffne
issues.json
in Visual Studio Code. - Passe Felder wie
title
,body
,labels
oderassignees
an. - Stelle sicher, dass alle Referenzen wie
milestone_id
korrekt sind.
- Öffne
Schritt 4: Meilensteine ins Zielrepository importieren
-
API-Endpoint nutzen:
- Lade die Meilensteine in das Zielrepository hoch:
jq -c '.[]' milestones.json | while read milestone; do curl -X POST -H "Authorization: token ZUGRIFFS_TOKEN" \ -H "Content-Type: application/json" \ -d "$milestone" \ "https://forgejo.example.com/api/v1/repos/TARGET_USER/TARGET_REPO/milestones" done
- Lade die Meilensteine in das Zielrepository hoch:
-
Ergebnisse prüfen:
- Gehe ins Zielrepository und überprüfe die Meilensteine.
Schritt 5: Issues ins Zielrepository importieren
-
API-Endpoint nutzen:
- Lade die Issues in das Zielrepository hoch:
jq -c '.[]' issues.json | while read issue; do curl -X POST -H "Authorization: token ZUGRIFFS_TOKEN" \ -H "Content-Type: application/json" \ -d "$issue" \ "https://forgejo.example.com/api/v1/repos/TARGET_USER/TARGET_REPO/issues" done
- Lade die Issues in das Zielrepository hoch:
-
Fehlerbehebung bei Importproblemen:
- Falls der Fehler
cannot unmarshal number { into Go struct
auftritt, prüfe die Labels in der Dateiissues.json
. Labels müssen ein Array von Strings sein. - Falls der Fehler
expected comma after object element
auftritt, ist das JSON fehlerhaft. Nutze einen Validator, um die Datei zu korrigieren.
- Falls der Fehler
Schritt 6: Daten validieren
-
Datenüberprüfung:
- Öffne das Zielrepository und prüfe:
- Sind alle Meilensteine vorhanden?
- Wurden alle Issues korrekt übertragen (inkl. Labels und Zuweisungen)?
- Öffne das Zielrepository und prüfe:
-
Fehlerbehebung:
- Bei Problemen erneut die JSON-Daten prüfen und die oben genannten Schritte wiederholen.
Zusätzliche Hinweise
- Nutze Python oder Skripte für komplexere Automatisierungen (siehe vorherige Anleitung).
- Dokumentiere Anpassungen in einem Logbuch, um Änderungen nachvollziehbar zu machen.
- Teste den Ablauf zuerst in einem Testrepository.