Tuto funkci vyvinul projekt ayaka-notes/ayakaleaf-pro. Je k dispozici od verze v6.4.0. Stále je ve stavu beta. Pokud narazíte na jakýkoli problém, uvítáme vaši zpětnou vazbu.
Nastavení synchronizace s GitLabem
Vytvořte OAuth aplikaci na své instanci GitLabu v části User settings → Applications (nebo Admin area → Applications pro aplikaci pro celou instanci):- Redirect URI:
${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback - Confidential: zaškrtnuto
- Scopes:
api
config/variables.env
Samostatně spravovaný GitLab
NastavteGITLAB_SYNC_URL na webovou adresu své instance, tedy tu, přes kterou otevíráte projekty v prohlížeči. Adresa REST API je od ní odvozena:
GITLAB_SYNC_API_URL nastavujte pouze tehdy, když vaše instance poskytuje API jinde, například za API gateway.
Pokud vaše instance používá certifikát od soukromé certifikační autority, připojte certifikát CA do kontejneru a nastavte na něj
NODE_EXTRA_CA_CERTS, např. NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/gitlab-ca.pem.Propojené účty a projekty patří k instanci, se kterou byly propojeny. Před přepnutím
GITLAB_SYNC_URL na jinou instanci požádejte uživatele, aby zrušili propojení svého účtu GitLab a projektů.GITLAB_SYNC_PROXY_URL=http://10.0.0.1:10808. Musí jít o standardní dopřednou HTTP/HTTPS proxy a nesmí používat 127.0.0.1.
Kdo může propojovat a synchronizovat
Stejně jako v Overleaf Cloud může projekt s repozitářem GitLab propojit pouze vlastník projektu. Po propojení jej může synchronizovat každý spolupracovník s oprávněním k úpravám.- Overleaf komunikuje s GitLabem prostřednictvím účtu GitLab uživatele, který synchronizuje, takže každý spolupracovník, který synchronizuje, si propojí vlastní účet GitLab a musí mít oprávnění pushovat do výchozí větve repozitáře.
- Spolupracovníci s oprávněním pouze ke čtení nemohou pro projekt synchronizaci s GitLabem používat.
Jak funguje synchronizace s GitLabem
- Oprávnění: uživatelé musí mít oprávnění pushovat do výchozí větve propojeného projektu. Pokud je výchozí větev chráněná a uživatel do ní pushovat nesmí, Overleaf jej požádá, aby kontaktoval vlastníka projektu, stejně jako u repozitáře, ke kterému ztratil přístup.
- Slučování: pokud se projekt změnil v Overleafu i v GitLabu, Overleaf commitne své změny do dočasné větve s názvem
overleaf-YYYY-MM-DD-HHMMSSa sloučí ji prostřednictvím merge requestu, protože GitLab nemá API pro slučování větví bez něj. Po sloučení Overleaf dočasnou větev i merge request smaže. Merge requesty mohou v GitLabu mazat pouze administrátoři a vlastníci projektů, takže u ostatních uživatelů sloučený merge request v projektu zůstane. - Pravidla slučování: Overleaf nikdy neobchází pravidla slučování projektu. Pokud má merge request konflikt nebo vyžaduje schválení či úspěšně dokončenou pipeline, zůstane otevřený a Overleaf požádá uživatele, aby jej sloučil v GitLabu a poté pokračoval v synchronizaci.
- Pipeliny: commity z Overleafu spouštějí pipeliny jako jakékoli jiné commity. Pokud váš projekt spouští pipeliny pro merge requesty a vyžaduje jejich úspěšné dokončení, slučování z Overleafu na ně čeká, jak je popsáno výše.
Q&A
Mohu do výchozí větve provést force push?
Mohu do výchozí větve provést force push?
Odpověď: Ponechte prosím force push do výchozí větve zakázaný. To je výchozí nastavení GitLabu: výchozí větev nového projektu je chráněná a nikdo do ní nemůže provést force push. Overleaf dokáže převzít přepsanou větev, ale synchronizace s GitLabem je navržena pro výchozí větev, jejíž historie pouze roste.
Mohu přejmenovat výchozí větev propojeného projektu?
Mohu přejmenovat výchozí větev propojeného projektu?
Odpověď: Ne. Overleaf nadále synchronizuje s větví, se kterou byl projekt propojen, takže po přejmenování nebo odstranění této větve synchronizace selžou. Chcete-li synchronizovat s jinou větví, zrušte propojení projektu a poté importujte repozitář do nového projektu, který použije aktuální výchozí větev.

