7.1 KiB
7.1 KiB
Gitea Workflow - Best Practices
Diese Anleitung beschreibt den empfohlenen Git-Workflow für das PointCab Webexport Projekt.
🏗️ Repository erstellen
In Gitea
- Anmelden auf Ihrem Gitea-Server
- "+" → "Neues Repository"
- Einstellungen:
- Name:
pointcab-webexport - Beschreibung:
PointCab Webexport Server - Webbasiertes Sharing-System - Sichtbarkeit: Privat (oder Öffentlich)
- README initialisieren: Nein (wir haben bereits eine)
- .gitignore: Keine (wir haben bereits eine)
- Lizenz: MIT
- Name:
Lokales Repository verbinden
cd /home/ubuntu/pointcab_webexport_git
# Git initialisieren
git init
# Remote hinzufügen
git remote add origin https://ihr-gitea-server/username/pointcab-webexport.git
# Ersten Commit erstellen
git add .
git commit -m "Initial commit: PointCab Webexport Server"
# Auf Gitea pushen
git push -u origin main
🌿 Branch-Strategie
Haupt-Branches
| Branch | Zweck | Schutz |
|---|---|---|
main |
Produktions-Code | Geschützt |
develop |
Entwicklung | Optional geschützt |
Feature-Branches
feature/neue-funktion
feature/upload-verbesserung
feature/multi-html-support
Bugfix-Branches
bugfix/404-fehler
bugfix/passwort-problem
hotfix/kritischer-fehler
Branch-Workflow
main ─────────────────────────────────────────►
↑ ↑
│ │
develop ──●────●─────●────────●────►
│ ↑ │ ↑
│ │ │ │
feature/a ─●───┘ │ │
│ │
feature/b ───────────●────────┘
📝 Commit-Konventionen
Format
<typ>(<bereich>): <kurze beschreibung>
<optionale längere beschreibung>
<optionale referenzen>
Typen
| Typ | Beschreibung |
|---|---|
feat |
Neue Funktion |
fix |
Bugfix |
docs |
Dokumentation |
style |
Formatierung |
refactor |
Code-Verbesserung |
test |
Tests |
chore |
Wartung |
Beispiele
# Neue Funktion
git commit -m "feat(upload): Multi-HTML-Datei-Auswahl hinzugefügt"
# Bugfix
git commit -m "fix(assets): 404-Fehler bei Subfolder-Assets behoben"
# Dokumentation
git commit -m "docs: Installationsanleitung aktualisiert"
# Refactoring
git commit -m "refactor(service): Asset-Pfad-Auflösung verbessert"
🔀 Pull Requests
PR erstellen
-
Branch erstellen:
git checkout develop git pull git checkout -b feature/neue-funktion -
Änderungen machen:
# Code ändern... git add . git commit -m "feat: Neue Funktion implementiert" -
Branch pushen:
git push -u origin feature/neue-funktion -
PR in Gitea erstellen:
- Ziel-Branch:
develop(odermainfür Hotfixes) - Beschreibung mit Änderungen
- Reviewer zuweisen (falls vorhanden)
- Ziel-Branch:
PR-Checkliste
- Code getestet
- Dokumentation aktualisiert
- Keine Secrets im Code
- Commit-Messages korrekt
- Ziel-Branch korrekt
PR mergen
- Review (falls vorhanden)
- Merge in Gitea:
- "Squash and Merge" für saubere Historie
- Oder "Merge Commit" für vollständige Historie
- Branch löschen (optional)
🏷️ Releases
Versionierung (Semantic Versioning)
MAJOR.MINOR.PATCH
1.0.0 → 1.0.1 (Bugfix)
1.0.1 → 1.1.0 (Neue Funktion)
1.1.0 → 2.0.0 (Breaking Change)
Release erstellen
-
Version aktualisieren:
# package.json Version ändern npm version patch # oder minor/major -
Changelog aktualisieren:
# docs/CHANGELOG.md bearbeiten -
Tag erstellen:
git tag -a v1.0.0 -m "Release v1.0.0" git push origin v1.0.0 -
In Gitea:
- Releases → Neues Release
- Tag auswählen:
v1.0.0 - Beschreibung mit Änderungen
Release-Notes Template
## v1.0.0 (2026-01-16)
### Neue Funktionen
- Multi-HTML-Datei-Unterstützung
- RAR-Entpacken auf dem Server
### Bugfixes
- 404-Fehler bei Subfolder-Assets behoben
- Passwort-Speicherung korrigiert
### Verbesserungen
- Performance-Optimierung beim Upload
- Bessere Fehlermeldungen
### Breaking Changes
- Keine
🔄 Typischer Workflow
Neue Funktion entwickeln
# 1. Develop aktualisieren
git checkout develop
git pull
# 2. Feature-Branch erstellen
git checkout -b feature/neue-funktion
# 3. Entwickeln und committen
# ... code ändern ...
git add .
git commit -m "feat: Neue Funktion - Teil 1"
# ... weiter entwickeln ...
git add .
git commit -m "feat: Neue Funktion - Teil 2"
# 4. Branch pushen
git push -u origin feature/neue-funktion
# 5. PR in Gitea erstellen
# 6. Nach Merge: Branch löschen
git checkout develop
git pull
git branch -d feature/neue-funktion
Bugfix (normal)
git checkout develop
git pull
git checkout -b bugfix/problem-beschreibung
# Fix implementieren
git add .
git commit -m "fix: Problem beschreibung behoben"
git push -u origin bugfix/problem-beschreibung
# PR erstellen → develop
Hotfix (kritisch)
git checkout main
git pull
git checkout -b hotfix/kritischer-fehler
# Fix implementieren
git add .
git commit -m "fix: Kritischer Fehler behoben"
git push -u origin hotfix/kritischer-fehler
# PR erstellen → main (und develop!)
⚙️ CI/CD (Optional)
Gitea Actions (falls verfügbar)
Erstellen Sie .gitea/workflows/ci.yml:
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: |
cd nodejs_space
npm install
- name: Build
run: |
cd nodejs_space
npm run build
- name: Lint (optional)
run: |
cd nodejs_space
npm run lint
Manuelles Deployment
Nach erfolgreichem Merge in main:
# Auf dem Server
cd /var/www/pointcab_webexport_server
git pull origin main
cd nodejs_space
npm install
npm run build
pm2 restart pointcab-server
📋 Best Practices Zusammenfassung
- Niemals direkt auf
mainpushen - Immer über Pull Requests arbeiten
- Aussagekräftige Commit-Messages
- Regelmäßig
developaktualisieren - Feature-Branches klein halten
- Branches nach Merge löschen
- Tags für Releases verwenden
- Changelog pflegen
🔗 Nützliche Git-Befehle
# Status
git status
git log --oneline -10
# Branches
git branch -a
git checkout -b neuer-branch
# Remote
git remote -v
git fetch --all
# Stash (temporär speichern)
git stash
git stash pop
# Rebase (Historie aufräumen)
git rebase -i HEAD~3
# Diff
git diff
git diff develop
Weitere Dokumentation: docs/ARCHITECTURE.md