Workflow Git avec Forgejo¶
PerfShop est hébergé sur Forgejo, un fork communautaire de Gitea qui se comporte exactement comme GitHub ou GitLab du point de vue du développeur. Les commandes Git sont identiques, seuls les noms d'interfaces changent (« Pull Request » devient « Pull Request » — identique ; le nom « Merge Request » de GitLab n'est pas utilisé).
Note
PerfShop n'utilise pas GitLab. Toute la gestion de code source passe par Forgejo auto-hébergé. La documentation dev/git workflow de PerfShop ne décrit que ce workflow Forgejo.
Créer un compte Forgejo¶
Sur l'instance Forgejo locale de PerfShop (http://<HOST_IP>:3009), un compte forgejo-admin est créé au démarrage par le seed. L'administrateur peut ensuite créer d'autres comptes ou autoriser les inscriptions publiques.
Pour les instances dédiées à la formation, chaque étudiant reçoit un compte individuel créé par le formateur à l'avance.
Cloner¶
Voir Cloner depuis Forgejo pour les commandes précises.
Workflow branches¶
Le workflow standard de contribution est le suivant :
flowchart LR
Main[main] -->|git checkout -b| Feat[feature/ma-fonctionnalite]
Feat -->|commits| Feat
Feat -->|git push| Remote[origin/feature/ma-fonctionnalite]
Remote -->|Pull Request| Review[Revue + CI]
Review -->|merge| Main
1. Créer une branche¶
Depuis main à jour :
Nommage des branches recommandé :
| Préfixe | Usage |
|---|---|
feature/... |
Nouvelle fonctionnalité |
fix/... |
Correction de bug |
docs/... |
Mise à jour de documentation uniquement |
refactor/... |
Refactoring sans changement de comportement |
chore/... |
Tâches techniques (dépendances, CI, build) |
2. Committer¶
PerfShop n'impose pas de format de commit rigide (pas de Conventional Commits obligatoire, pas de linter de message), mais les mainteneurs apprécient des messages clairs et concis en français ou en anglais. La première ligne résume l'intention en 72 caractères maximum ; les lignes suivantes (optionnelles, après une ligne vide) détaillent le contexte.
3. Pousser¶
Le flag -u (ou --set-upstream) configure la branche locale pour suivre la branche distante, ce qui permet ensuite d'utiliser simplement git push et git pull.
4. Ouvrir une Pull Request¶
Sur l'interface Forgejo, allez dans le dépôt et cliquez sur New Pull Request. Forgejo détecte automatiquement les branches non mergées et vous propose de créer une PR.
Remplissez :
- Titre — reprend le sujet du commit principal
- Description — explique le contexte, les choix de conception, les tests effectués
- Reviewers — désignez un ou plusieurs mainteneurs
- Labels — éventuels tags (
bug,enhancement,documentation,question)
5. Itérer sur la revue¶
Si les reviewers demandent des changements, continuez à committer et pousser sur la même branche. La PR Forgejo se met à jour automatiquement.
6. Merge¶
Une fois la PR approuvée et la CI verte (si elle existe), un mainteneur merge la PR. Trois stratégies sont possibles sur Forgejo, comme sur GitHub :
- Create a merge commit — conserve tout l'historique de la branche (commit de merge distinct)
- Squash and merge — combine tous les commits en un seul
- Rebase and merge — rejoue les commits de la branche sur
mainsans commit de merge
Le choix dépend de la politique du projet. Par défaut, PerfShop ne force aucune stratégie — c'est au mainteneur qui merge de choisir.
Commandes utiles¶
Synchroniser avec main¶
Si votre branche a divergé depuis main et que vous voulez l'actualiser :
Si des conflits apparaissent, résolvez-les manuellement puis :
Et forcez le push (votre historique a été réécrit) :
Le --force-with-lease est plus sûr que --force : il refuse de pousser si quelqu'un d'autre a poussé sur la même branche entre temps.
Annuler le dernier commit local¶
Les modifications restent dans le staging — vous pouvez re-committer avec un autre message ou d'autres fichiers.
Voir le diff d'un commit¶
Chercher dans l'historique¶
Clés SSH sur Forgejo¶
Pour éviter de saisir votre mot de passe à chaque push :
- Générez une clé SSH si vous n'en avez pas :
- Copiez le contenu de
~/.ssh/id_ed25519.pub - Sur Forgejo : Settings → SSH / GPG Keys → Add Key
- Changez l'URL du remote de HTTPS vers SSH :
Tokens d'accès personnel¶
Pour les scripts et la CI qui ne peuvent pas utiliser SSH, Forgejo propose des tokens d'accès personnel à créer dans Settings → Applications → Generate New Token. Le token remplace le mot de passe dans les URLs HTTPS :
Stockez jamais les tokens en clair dans un fichier versionné.
.gitignore et fichiers sensibles¶
Le .gitignore racine du projet exclut déjà :
.env(valeurs de configuration locales)node_modules/backend/target/frontend/dist/- Fichiers IDE (
.idea/,.vscode/,*.iml) - Logs et dumps
Ne committez jamais un fichier .env avec des credentials réels, un keystore privé, une clé PGP ou un token d'accès. Si vous le faites par accident, changez immédiatement les credentials compromis — un git revert ne suffit pas car l'historique reste accessible.
Hooks éventuels¶
PerfShop ne fournit pas de hooks Git obligatoires. Vous pouvez ajouter vos propres hooks locaux dans .git/hooks/ (ex : un pre-commit qui lance mvn spotless:apply ou npm run lint), ils ne seront pas versionnés.
CI / intégration continue¶
Forgejo supporte un système d'actions compatible GitHub Actions (via Forgejo Actions). Si une instance PerfShop dispose de runners configurés, vous pouvez ajouter des workflows dans .forgejo/workflows/ qui s'exécuteront à chaque push ou PR. Consultez l'interface Forgejo de votre instance pour voir les actions exécutées sur vos PR.
Voir aussi¶
- Cloner depuis Forgejo — URLs et première récupération
- Forgejo — présentation de l'outil
- Guide Forgejo — guide orienté utilisateur