Diese Funktion wurde von ayaka-notes/ayakaleaf-pro entwickelt. Sie ist ab v6.4.0 verfügbar und befindet sich noch im Beta-Status. Wir freuen uns über Ihr Feedback, falls Probleme auftreten.
GitLab-Synchronisierung einrichten
Erstellen Sie auf Ihrer GitLab-Instanz eine OAuth-Anwendung unter Benutzereinstellungen → Anwendungen (oder unter Admin-Bereich → Anwendungen für eine instanzweite Anwendung):- Redirect URI:
${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback - Confidential: aktiviert
- Scopes:
api
config/variables.env
Selbstverwaltetes GitLab
Setzen SieGITLAB_SYNC_URL auf die Webadresse Ihrer Instanz, also die Adresse, mit der Sie Projekte im Browser öffnen. Die REST-API wird daraus abgeleitet:
Setzen Sie
GITLAB_SYNC_API_URL nur, wenn Ihre Instanz die API an einer anderen Stelle bereitstellt, zum Beispiel hinter einem API-Gateway.
Wenn Ihre Instanz ein Zertifikat einer privaten CA verwendet, binden Sie das CA-Zertifikat in den Container ein und lassen Sie
NODE_EXTRA_CA_CERTS darauf verweisen, z. B. NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/gitlab-ca.pem.Verknüpfte Konten und Projekte gehören zu der Instanz, mit der sie verknüpft wurden. Bevor Sie
GITLAB_SYNC_URL auf eine andere Instanz umstellen, bitten Sie die Benutzer, die Verknüpfung ihres GitLab-Kontos und ihrer Projekte aufzuheben.GITLAB_SYNC_PROXY_URL=http://10.0.0.1:10808. Es muss sich um einen standardmäßigen HTTP/HTTPS-Forward-Proxy handeln, und 127.0.0.1 darf nicht verwendet werden.
Wer verknüpfen und synchronisieren kann
Wie in Overleaf Cloud kann nur der Projektbesitzer ein Projekt mit einem GitLab-Repository verknüpfen. Sobald es verknüpft ist, kann jeder Mitarbeitende mit Bearbeitungsrechten es synchronisieren.- Overleaf kommuniziert mit GitLab über das GitLab-Konto des Benutzers, der synchronisiert. Daher verknüpft jeder Mitarbeitende, der synchronisiert, sein eigenes GitLab-Konto und muss berechtigt sein, auf den Standard-Branch des Repositorys zu pushen.
- Mitarbeitende mit reinem Leserecht können die GitLab-Synchronisierung für das Projekt nicht verwenden.
So funktioniert die Synchronisierung mit GitLab
- Berechtigungen: Benutzer müssen berechtigt sein, auf den Standard-Branch des verknüpften Projekts zu pushen. Ist der Standard-Branch geschützt und darf der Benutzer nicht darauf pushen, bittet Overleaf ihn, sich an den Projektbesitzer zu wenden – wie bei einem Repository, auf das er keinen Zugriff mehr hat.
- Zusammenführen: Wenn ein Projekt sowohl in Overleaf als auch in GitLab geändert wurde, committet Overleaf seine Änderungen in einen temporären Branch namens
overleaf-YYYY-MM-DD-HHMMSSund führt ihn über einen Merge Request zusammen, da GitLab keine API zum Zusammenführen von Branches ohne Merge Request bietet. Nach dem Merge löscht Overleaf den temporären Branch und den Merge Request. In GitLab dürfen nur Administratoren und Projektbesitzer Merge Requests löschen, daher bleibt der zusammengeführte Merge Request bei anderen Benutzern im Projekt erhalten. - Merge-Regeln: Overleaf umgeht niemals die Merge-Regeln des Projekts. Wenn der Merge Request einen Konflikt aufweist oder eine Genehmigung bzw. eine erfolgreiche Pipeline benötigt, bleibt er offen, und Overleaf bittet den Benutzer, ihn in GitLab zusammenzuführen und anschließend die Synchronisierung fortzusetzen.
- Pipelines: Commits von Overleaf starten Pipelines wie jeder andere Commit. Wenn Ihr Projekt Pipelines für Merge Requests ausführt und deren Erfolg voraussetzt, warten Merges von Overleaf darauf, wie oben beschrieben.
Q&A
Kann ich einen Force-Push auf den Standard-Branch ausführen?
Kann ich einen Force-Push auf den Standard-Branch ausführen?
Antwort: Bitte lassen Sie Force-Pushes auf den Standard-Branch deaktiviert. Dies ist die Standardeinstellung von GitLab: Der Standard-Branch eines neuen Projekts ist geschützt, und niemand kann einen Force-Push darauf ausführen. Overleaf kann einen umgeschriebenen Branch übernehmen, aber die GitLab-Synchronisierung ist für einen Standard-Branch ausgelegt, dessen Historie nur wächst.
Kann ich den Standard-Branch eines verknüpften Projekts umbenennen?
Kann ich den Standard-Branch eines verknüpften Projekts umbenennen?
Antwort: Nein. Overleaf synchronisiert weiterhin mit dem Branch, mit dem das Projekt verknüpft wurde, sodass Synchronisierungen fehlschlagen, sobald dieser Branch umbenannt oder entfernt wird. Um mit einem anderen Branch zu synchronisieren, heben Sie die Verknüpfung des Projekts auf und importieren Sie das Repository anschließend in ein neues Projekt, das den aktuellen Standard-Branch verwendet.

