Cette fonctionnalité est développée par ayaka-notes/ayakaleaf-pro. Elle est disponible à partir de la v6.4.0. Elle est encore en version bêta : vos retours nous sont précieux si vous rencontrez un problème.
Configurer la synchronisation GitLab
Créez une application OAuth sur votre instance GitLab, dans User settings → Applications (ou Admin area → Applications pour une application à l’échelle de l’instance) :- Redirect URI :
${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback - Confidential : coché
- Scopes :
api
config/variables.env
GitLab autogéré
DéfinissezGITLAB_SYNC_URL sur l’adresse web de votre instance, celle que vous utilisez pour ouvrir les projets dans le navigateur. L’API REST en est déduite :
Ne définissez
GITLAB_SYNC_API_URL que si votre instance expose l’API ailleurs, par exemple derrière une passerelle d’API.
Si votre instance utilise un certificat émis par une autorité de certification privée, montez le certificat de l’autorité dans le conteneur et faites pointer
NODE_EXTRA_CA_CERTS vers celui-ci, par exemple NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/gitlab-ca.pem.Les comptes et projets liés appartiennent à l’instance avec laquelle ils ont été liés. Avant de faire pointer
GITLAB_SYNC_URL vers une autre instance, demandez aux utilisateurs de délier leur compte GitLab et leurs projets.GITLAB_SYNC_PROXY_URL=http://10.0.0.1:10808. Il doit s’agir d’un proxy direct HTTP/HTTPS standard, et il ne doit pas utiliser 127.0.0.1.
Qui peut lier et synchroniser
Comme sur Overleaf Cloud, seul le propriétaire du projet peut lier un projet à un dépôt GitLab. Une fois le projet lié, chaque collaborateur disposant d’un accès en modification peut le synchroniser.- Overleaf communique avec GitLab au moyen du compte GitLab de l’utilisateur qui synchronise : chaque collaborateur qui synchronise lie donc son propre compte GitLab et doit être autorisé à pousser sur la branche par défaut du dépôt.
- Les collaborateurs en lecture seule ne peuvent pas utiliser la synchronisation GitLab pour le projet.
Fonctionnement de la synchronisation avec GitLab
- Autorisations : les utilisateurs doivent être autorisés à pousser sur la branche par défaut du projet lié. Lorsque la branche par défaut est protégée et que l’utilisateur ne peut pas y pousser, Overleaf lui demande de contacter le propriétaire du projet, comme pour un dépôt auquel il n’a plus accès.
- Fusion : lorsqu’un projet a été modifié à la fois dans Overleaf et dans GitLab, Overleaf commite ses modifications dans une branche temporaire nommée
overleaf-YYYY-MM-DD-HHMMSSet la fusionne au moyen d’une merge request, car GitLab ne dispose d’aucune API permettant de fusionner des branches sans en passer par une. Après la fusion, Overleaf supprime la branche temporaire et la merge request. Seuls les administrateurs et les propriétaires de projet peuvent supprimer des merge requests dans GitLab ; pour les autres utilisateurs, la merge request fusionnée reste donc dans le projet. - Règles de fusion : Overleaf ne contourne jamais les règles de fusion du projet. Lorsque la merge request présente un conflit, ou nécessite une approbation ou un pipeline réussi, elle reste ouverte et Overleaf demande à l’utilisateur de la fusionner dans GitLab, puis de poursuivre la synchronisation.
- Pipelines : les commits provenant d’Overleaf déclenchent des pipelines comme n’importe quel autre commit. Si votre projet exécute des pipelines pour les merge requests et exige qu’ils réussissent, les fusions depuis Overleaf attendent leur résultat, comme décrit ci-dessus.
Q&A
Puis-je faire un push forcé sur la branche par défaut ?
Puis-je faire un push forcé sur la branche par défaut ?
Réponse : Veuillez laisser les push forcés désactivés sur la branche par défaut. C’est le comportement par défaut de GitLab : la branche par défaut d’un nouveau projet est protégée et personne ne peut y faire de push forcé. Overleaf peut reprendre une branche réécrite, mais la synchronisation GitLab est conçue pour une branche par défaut dont l’historique ne fait que croître.
Puis-je renommer la branche par défaut d'un projet lié ?
Puis-je renommer la branche par défaut d'un projet lié ?
Réponse : Non. Overleaf continue de se synchroniser avec la branche à laquelle le projet a été lié, si bien que les synchronisations échouent dès que cette branche est renommée ou supprimée. Pour synchroniser avec une autre branche, déliez le projet, puis importez le dépôt dans un nouveau projet, qui utilisera la branche par défaut actuelle.

