Projektwissen: Git-Vorgaben, Ticketzugriff, Tests und Einstieg
Erster Stand des Repositories AG_QGIS/Projektwissen (bisher Arbeitstitel "Workspace", ADR 0006). Der lokale Ordner heisst weiter AG_QGIS, weil darin auch die Plugin-Klone liegen. Git verbindlich (ADR 0007), aus dem bisherigen Wiki-Konzept entwickelt: - docs/leitfaden/05_git_arbeitsweise.md mit Kanal-Kette, Branch-Namen und Gitea-Branch-Schutz. - Der Einstiegspunkt eines Fixes richtet sich nach dem Kanal, in dem der Fehler sitzt; ein Fix an testing oder stable ist erst mit der Rueckfuehrung nach unten abgeschlossen. Das fehlte bisher. - Der stabile Kanal heisst stable, nicht main: der Release-Workflow in Repository:hidden/workflows fuehrt git checkout "$CHANNEL" aus, der Branchname muss also dem Kanalnamen entsprechen. Er existiert in keinem Plugin-Repo und ist vom Maintainer anzulegen. - Der Mensch drueckt ab: .claude/settings.json sperrt push, merge, tag. - scripts/hallo.py und /hallo holen den Stand aller Klone, per Fast-Forward wo gefahrlos; nie mergen, stashen oder verwerfen. Ticketzugriff: - scripts/gitea.py liest Issues, Kommentare und PRs ueber die oeffentliche API, ohne Token, nur GET. Schreibendes nur als Entwurf in entwuerfe/. - Skill sn-ticket. Tests (ADR 0009): - docs/leitfaden/06_tests.md: Testebenen, Testpflicht, und wie eine Fachperson beurteilt, ob Tests fachlich sinnvoll sind. - scripts/testkatalog.py erzeugt docs/tests/testkatalog.md per ast-Parsing, ohne Import und ohne QGIS. Befund: nur 100 von 332 Tests haben einen Docstring, sn_basis keinen einzigen von 87. - Vorlage und erste Testkonzept-Seite mit Mermaid. Dabei gefunden und gegen origin geprueft: _ermittle_gebietstyp_aus_fbschl hat keinen Test, obwohl PR #44/#45 genau diese Funktion tolerant gemacht hat. - docs/konzept/07_qgis_tests_plan.md: Stufenplan fuer Tests gegen echtes QGIS. Dabei aufgefallen: QGIS 3.40 ist seit Januar 2026 End of Life, qgis_min steht aber noch darauf. Werkzeuge (ADR 0008): - 04_werkzeuge_einrichten.md nur noch Claude Code als CLI und in VS Code. - .vscode/ entfernt, brauchbare Einstellungen als persoenliche Vorlage. Ausserdem: README als Einstieg neu aufgebaut, Mermaid-Diagramm in schnittstellen.md repariert (unmaskierte Klammern, rendert seither nicht). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
# Repository „Projektwissen" auf Gitea einrichten
|
||||
|
||||
Prüfliste für den Maintainer. Stand 04.09.2026. Einmalig auszuführen; danach ist dieses Dokument nur noch
|
||||
Nachweis, was wie eingestellt wurde.
|
||||
|
||||
Alles hier ist **Menschenarbeit**. Ein KI-Agent kann die Texte vorbereiten, aber weder Repositories anlegen noch
|
||||
pushen noch Schutzregeln setzen (ADR 0007).
|
||||
|
||||
## 1. Repository anlegen
|
||||
|
||||
Gitea → Organisation `AG_QGIS` → **Neues Repository**.
|
||||
|
||||
| Einstellung | Wert |
|
||||
|---|---|
|
||||
| Name | `Projektwissen` |
|
||||
| Beschreibung | Gemeinsame Wissensbasis, Regeln und Werkzeuge der QGIS-Plugin-Entwicklung LNO Sachsen |
|
||||
| Sichtbarkeit | öffentlich (wie die übrigen Repos der Organisation) |
|
||||
| `.gitignore`, Lizenz, README | **nicht** anlegen lassen — bringt der erste Push mit |
|
||||
| Issues | an |
|
||||
| Wiki | aus — die Doku liegt versioniert im Repo (ADR-Begründung in `docs/wissen/externe_dienste.md`) |
|
||||
| Standard-Branch | wird beim ersten Push gesetzt |
|
||||
|
||||
## 2. Ersten Stand pushen
|
||||
|
||||
Der Ordner `AG_QGIS/` ist bereits als Git-Repository vorbereitet, mit einem Commit, der genau die Dateien
|
||||
dieses Repositories enthält (die Plugin-Klone sind per `.gitignore` ausgenommen).
|
||||
|
||||
```bash
|
||||
cd <…>/AG_QGIS
|
||||
git status # erwartet: nichts Unversioniertes außer den Plugin-Klonen
|
||||
git log --oneline # erwartet: der vorbereitete erste Commit
|
||||
git remote add origin https://entwicklung.flurneuordnung-sachsen.de/AG_QGIS/Projektwissen.git
|
||||
git push -u origin unstable
|
||||
```
|
||||
|
||||
Wir beginnen bewusst auf `unstable`, damit auch dieses Repository dem Kanal-Modell aus
|
||||
[`../leitfaden/05_git_arbeitsweise.md`](../leitfaden/05_git_arbeitsweise.md) folgt.
|
||||
|
||||
**Vor dem Push prüfen:**
|
||||
|
||||
- [ ] **Autor des Commits stimmt.** `git log -1 --format='%an <%ae>'` – der vorbereitete Commit trägt die
|
||||
Identität, die auf dem vorbereitenden Rechner in `git config --global` eingetragen war. Ist das nicht die
|
||||
dienstliche Adresse, vor dem Push korrigieren:
|
||||
```bash
|
||||
git config user.name "Vorname Nachname"
|
||||
git config user.email "dienstliche@adresse"
|
||||
git commit --amend --reset-author --no-edit
|
||||
```
|
||||
- [ ] `git status` zeigt keine Plugin-Ordner (`Plugin_SN_*`, `Repository`, `Linkliste`, `Defaults`)
|
||||
- [ ] `entwuerfe/` ist nicht enthalten
|
||||
- [ ] keine Zugangsdaten, keine Tokens, keine echten Verfahrensdaten
|
||||
- [ ] `python scripts/run_tests.py` läuft
|
||||
- [ ] `python scripts/testkatalog.py --pruefen` meldet „aktuell"
|
||||
|
||||
## 3. Branches anlegen
|
||||
|
||||
```bash
|
||||
git switch -c testing unstable && git push -u origin testing
|
||||
git switch -c stable unstable && git push -u origin stable
|
||||
git switch unstable
|
||||
```
|
||||
|
||||
Danach in Gitea unter **Einstellungen → Allgemein** den Standard-Branch auf `unstable` setzen — dort landet die
|
||||
tägliche Arbeit.
|
||||
|
||||
## 4. Branch-Schutz setzen
|
||||
|
||||
**Einstellungen → Branches** (englisch: *Settings → Branches*), dort eine neue Branch-Schutzregel anlegen — je
|
||||
einmal für `stable`, `testing` und `unstable`:
|
||||
|
||||
| Einstellung | Wert |
|
||||
|---|---|
|
||||
| Branch-Name | `stable` / `testing` / `unstable` |
|
||||
| Push deaktivieren | an |
|
||||
| Merge-Freigabe erforderlich | mindestens 1 |
|
||||
| Veraltete Freigaben verwerfen | an |
|
||||
| Statusprüfungen erforderlich | erst aktivieren, wenn CI läuft (Abschnitt 6) |
|
||||
|
||||
## 5. Dasselbe für die Plugin-Repositories
|
||||
|
||||
Dort fehlt bisher der stabile Kanal. Je Repo (`Plugin_SN_Basis`, `Plugin_SN_Plan41`,
|
||||
`Plugin_SN_Verfahrensgebiet`, `Plugin_SN_Widmung`, `Plugin_SN_FLT`, `Plugin_SN_Topografie`,
|
||||
`Plugin_SN_Template`):
|
||||
|
||||
- [ ] `stable` anlegen — aus `testing`, wo es das gibt, sonst aus `unstable`. **Der Name muss exakt `stable`
|
||||
lauten**, weil der Release-Workflow `git checkout "$CHANNEL"` ausführt (ADR 0007).
|
||||
- [ ] Branch-Schutz für `stable`, `testing`, `unstable` wie in Abschnitt 4
|
||||
- [ ] `oldstable` prüfen (`Plugin_SN_Basis`, `Plugin_SN_Plan41`): enthält er noch etwas Nötiges? Sonst löschen.
|
||||
- [ ] Verwaiste Branches prüfen und löschen: `feature/Drucklayout-überarbeiten`, `print_layout` (Basis),
|
||||
`bug/crash_on_exit` (Plan41), `alkis-nur-laden-stop`, `fix-fbschl-feldname` (Verfahrensgebiet)
|
||||
|
||||
Erst danach funktioniert ein Release auf dem stabilen Kanal (Tag ohne Suffix).
|
||||
|
||||
## 6. Optional: Tests in CI
|
||||
|
||||
Vorlage: [`../vorlagen/gitea_workflow_tests.yaml`](../vorlagen/gitea_workflow_tests.yaml) → als
|
||||
`.gitea/workflows/tests.yaml` in `Plugin_SN_Basis`, `Plugin_SN_Plan41` und `Plugin_SN_Verfahrensgebiet`.
|
||||
Sie klont das Projektwissen und die Nachbar-Repos und führt den Baseline-Lauf aus.
|
||||
|
||||
Voraussetzung: ein Gitea-Runner mit dem Label `alpine-latest` (wie beim Release-Workflow). Läuft das, in
|
||||
Abschnitt 4 „Statusprüfungen erforderlich" aktivieren.
|
||||
|
||||
Der Ausbau zu Tests gegen echtes QGIS steht in
|
||||
[`07_qgis_tests_plan.md`](07_qgis_tests_plan.md) und braucht einen Runner mit Docker.
|
||||
|
||||
## 7. Team informieren
|
||||
|
||||
- [ ] Link zum Repository und zur [`README.md`](../../README.md) verteilen
|
||||
- [ ] Auf die Umstellung hinweisen: der Klon-Befehl heißt jetzt
|
||||
`git clone .../Projektwissen.git AG_QGIS` (Ordnername unverändert)
|
||||
- [ ] Um Durchsicht der Entscheidungen 0006–0009 bitten; nach Zustimmung den Status aller ADR von
|
||||
„vorgeschlagen" auf „angenommen" setzen
|
||||
- [ ] Jede Person trägt sich in `docs/status/STATUS.md` unter „Wer arbeitet woran" ein
|
||||
|
||||
## 8. Nach der Einrichtung zu klären
|
||||
|
||||
Diese Punkte liegen als Entwürfe bzw. offene Baustellen in `docs/status/STATUS.md`:
|
||||
|
||||
1. **QGIS-Mindestversion.** Steht auf 3.40, das seit Januar 2026 End of Life ist
|
||||
([`07_qgis_tests_plan.md`](07_qgis_tests_plan.md) Abschnitt 2). Betrifft `workspace.toml` und alle
|
||||
`.gitea/templates/metadata.template`.
|
||||
2. **`.vscode/` aus den Plugin-Repos entfernen.** Liegt in vier Repos mit fest verdrahteten Pfaden eines
|
||||
einzelnen Entwicklers. Je ein kleiner Pull Request.
|
||||
3. **Release-Excludes ergänzen** (`Repository:hidden/workflows`): `AGENTS.md`, `CLAUDE.md`, `.agents/`,
|
||||
`.claude/`, `docs/`, `tests/`, `.vscode/`.
|
||||
Reference in New Issue
Block a user