Den här funktionen är utvecklad av ayaka-notes/ayakaleaf-pro. Den introducerades i v6.4.0 och finns i senare versioner. Den är fortfarande i betastatus. Vi behöver din återkoppling om du stöter på problem.
Konfigurera GitLab-synkronisering
Skapa en OAuth-applikation på din GitLab-instans, under User settings → Applications (eller Admin area → Applications för en applikation som gäller hela instansen):- Redirect URI:
${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback - Confidential: markerad
- Scopes:
api
config/variables.env
Egendriftad GitLab
AngeGITLAB_SYNC_URL till webbadressen för din instans, den du öppnar projekt med i webbläsaren. REST-API:et härleds från den:
Ange bara
GITLAB_SYNC_API_URL när din instans tillhandahåller API:et någon annanstans, till exempel bakom en API-gateway.
Om din instans använder ett certifikat från en privat CA monterar du CA-certifikatet i containern och låter
NODE_EXTRA_CA_CERTS peka på det, t.ex. NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/gitlab-ca.pem.Länkade konton och projekt hör till den instans de länkades med. Be användarna att avlänka sitt GitLab-konto och sina projekt innan du byter
GITLAB_SYNC_URL till en annan instans.GITLAB_SYNC_PROXY_URL=http://10.0.0.1:10808. Det måste vara en vanlig HTTP/HTTPS-framåtproxy, och den får inte använda 127.0.0.1.
Vem kan länka och synkronisera
Precis som på Overleaf Cloud kan endast projektägaren länka ett projekt till ett GitLab-repositorium. När det väl är länkat kan alla medarbetare med redigeringsbehörighet synkronisera det.- Overleaf kommunicerar med GitLab via GitLab-kontot för den användare som synkroniserar, så varje medarbetare som synkroniserar länkar sitt eget GitLab-konto och måste ha behörighet att pusha till repositoriets standardgren.
- Medarbetare med endast läsbehörighet kan inte använda GitLab-synkronisering för projektet.
Så fungerar synkronisering med GitLab
- Behörigheter: användare måste ha behörighet att pusha till standardgrenen i det länkade projektet. När standardgrenen är skyddad och användaren inte får pusha till den ber Overleaf dem att kontakta projektägaren, precis som med ett repositorium de har förlorat åtkomst till.
- Sammanslagning: när ett projekt har ändrats både i Overleaf och i GitLab committar Overleaf sina ändringar till en tillfällig gren med namnet
overleaf-YYYY-MM-DD-HHMMSSoch slår samman den via en merge request, eftersom GitLab saknar ett API för att slå samman grenar utan en sådan. Efter sammanslagningen tar Overleaf bort den tillfälliga grenen och merge requesten. Endast administratörer och projektägare får ta bort merge requests i GitLab, så för andra användare blir den sammanslagna merge requesten kvar i projektet. - Sammanslagningsregler: Overleaf kringgår aldrig projektets sammanslagningsregler. När merge requesten har en konflikt, eller kräver ett godkännande eller en godkänd pipeline, förblir den öppen och Overleaf ber användaren att slå samman den i GitLab och sedan fortsätta synkroniseringen.
- Pipelines: commits från Overleaf startar pipelines precis som alla andra commits. Om ditt projekt kör pipelines för merge requests och kräver att de godkänns väntar sammanslagningar från Overleaf på dem, enligt beskrivningen ovan.
Q&A
Kan jag force-pusha till standardgrenen?
Kan jag force-pusha till standardgrenen?
Svar: Håll force pushes till standardgrenen inaktiverade. Det är GitLabs standard: standardgrenen i ett nytt projekt är skyddad och ingen kan force-pusha till den. Overleaf kan ta över en omskriven gren, men GitLab-synkronisering är utformad för en standardgren vars historik bara växer.
Kan jag byta namn på standardgrenen i ett länkat projekt?
Kan jag byta namn på standardgrenen i ett länkat projekt?
Svar: Nej. Overleaf fortsätter att synkronisera med den gren som projektet länkades till, så synkroniseringar misslyckas när den grenen byter namn eller tas bort. För att synkronisera med en annan gren avlänkar du projektet och importerar sedan repositoriet till ett nytt projekt, som då använder den aktuella standardgrenen.

