Questa funzionalità è sviluppata da ayaka-notes/ayakaleaf-pro. È disponibile dalla v6.4.0 in poi ed è ancora in fase beta. Se riscontri problemi, abbiamo bisogno del tuo feedback.
Configurare la sincronizzazione con GitLab
Crea un’applicazione OAuth sulla tua istanza GitLab, in User settings → Applications (oppure Admin area → Applications per un’applicazione valida per tutta l’istanza):- Redirect URI:
${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback - Confidential: selezionato
- Scopes:
api
config/variables.env
GitLab self-managed
ImpostaGITLAB_SYNC_URL sull’indirizzo web della tua istanza, quello con cui apri i progetti nel browser. L’API REST viene ricavata da esso:
Imposta
GITLAB_SYNC_API_URL solo quando la tua istanza espone l’API altrove, ad esempio dietro un API gateway.
Se la tua istanza usa un certificato emesso da una CA privata, monta il certificato della CA nel container e fai puntare
NODE_EXTRA_CA_CERTS a esso, ad esempio NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/gitlab-ca.pem.Gli account e i progetti collegati appartengono all’istanza con cui sono stati collegati. Prima di cambiare
GITLAB_SYNC_URL verso un’altra istanza, chiedi agli utenti di scollegare il proprio account GitLab e i propri progetti.GITLAB_SYNC_PROXY_URL=http://10.0.0.1:10808. Deve essere un forward proxy HTTP/HTTPS standard e non deve usare 127.0.0.1.
Chi può collegare e sincronizzare
Come su Overleaf Cloud, solo il proprietario del progetto può collegare un progetto a un repository GitLab. Una volta collegato, ogni collaboratore con accesso in modifica può sincronizzarlo.- Overleaf comunica con GitLab usando l’account GitLab dell’utente che esegue la sincronizzazione, quindi ogni collaboratore che sincronizza collega il proprio account GitLab e deve avere il permesso di eseguire push sul branch predefinito del repository.
- I collaboratori con accesso in sola lettura non possono usare la sincronizzazione con GitLab per il progetto.
Come funziona la sincronizzazione con GitLab
- Permessi: gli utenti devono avere il permesso di eseguire push sul branch predefinito del progetto collegato. Quando il branch predefinito è protetto e l’utente non può eseguire push su di esso, Overleaf gli chiede di contattare il proprietario del progetto, come avviene per un repository a cui ha perso l’accesso.
- Merge: quando un progetto è stato modificato sia in Overleaf sia in GitLab, Overleaf esegue il commit delle proprie modifiche su un branch temporaneo chiamato
overleaf-YYYY-MM-DD-HHMMSSe lo unisce tramite una merge request, perché GitLab non offre un’API per unire branch senza di essa. Dopo il merge, Overleaf elimina il branch temporaneo e la merge request. In GitLab solo gli amministratori e i proprietari del progetto possono eliminare le merge request, quindi per gli altri utenti la merge request unita rimane nel progetto. - Regole di merge: Overleaf non aggira mai le regole di merge del progetto. Quando la merge request presenta un conflitto, oppure richiede un’approvazione o una pipeline superata, rimane aperta e Overleaf chiede all’utente di eseguire il merge in GitLab e poi di continuare la sincronizzazione.
- Pipeline: i commit provenienti da Overleaf avviano le pipeline come qualsiasi altro commit. Se il tuo progetto esegue pipeline per le merge request e ne richiede il superamento, i merge da Overleaf le attendono, come descritto sopra.
Q&A
Posso eseguire un force push sul branch predefinito?
Posso eseguire un force push sul branch predefinito?
Risposta: Ti preghiamo di mantenere disabilitati i force push sul branch predefinito. È l’impostazione predefinita di GitLab: il branch predefinito di un nuovo progetto è protetto e nessuno può eseguire force push su di esso. Overleaf può adottare un branch riscritto, ma la sincronizzazione con GitLab è pensata per un branch predefinito la cui cronologia cresce soltanto.
Posso rinominare il branch predefinito di un progetto collegato?
Posso rinominare il branch predefinito di un progetto collegato?
Risposta: No. Overleaf continua a sincronizzarsi con il branch a cui il progetto è stato collegato, quindi le sincronizzazioni falliscono quando quel branch viene rinominato o rimosso. Per sincronizzarti con un altro branch, scollega il progetto e poi importa il repository in un nuovo progetto, che userà il branch predefinito corrente.

