> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# GitLab-synkronisering

<Info>
  Denne funksjonen er utviklet av [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro). Den er introdusert fra og med v6.4.0. Den er fortsatt i betastatus. Vi trenger tilbakemeldingen din hvis du får problemer.
</Info>

GitLab-synkronisering fungerer som [GitHub-synkronisering](/no/on-premises/configuration/overleaf-toolkit/github-synchronisation): brukere kobler til GitLab-kontoen sin, eksporterer prosjekter til nye GitLab-prosjekter, importerer GitLab-repositorier og synkroniserer endringer i begge retninger. Det fungerer med GitLab.com og med selvdriftet GitLab 15.10 eller nyere (Community og Enterprise Edition).

### Sette opp GitLab-synkronisering

<Warning>
  Du må aktivere [git-bridge](/no/on-premises/configuration/overleaf-toolkit/git-integration) før du kan bruke GitLab-synkronisering.

  ```dotenv title="config/overleaf.rc" theme={null}
  GIT_BRIDGE_ENABLED=true
  ```
</Warning>

Opprett en OAuth-applikasjon på GitLab-instansen din, under *User settings → Applications* (eller *Admin area → Applications* for en applikasjon for hele instansen):

* **Redirect URI**: `${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback`
* **Confidential**: avkrysset
* **Scopes**: `api`

Kopier **Application ID** og **Secret**, og legg deretter til følgende innstillinger i Overleaf-miljøvariabelfilene dine.

```dotenv title="config/variables.env" wrap theme={null}
# used to encrypt the user's GitLab access and refresh tokens.
# How to generate: `openssl rand -hex 32`
GITLAB_TOKEN_CIPHER_PASSWORD=0123456789ABCDEFG # changed to yours

# GitLab Sync Settings
GITLAB_SYNC_ENABLED=true
GITLAB_SYNC_CLIENT_ID=
GITLAB_SYNC_CLIENT_SECRET=

# Web address of your GitLab, defaults to https://gitlab.com
# GITLAB_SYNC_URL=https://gitlab.example.com

# OAuth callback is: ${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback
# (Optional) GITLAB_SYNC_PROXY_URL=http://10.0.0.1:10808
```

<Warning>
  Før du konfigurerer redirect-URI-en for GitLab OAuth, må du sørge for at `OVERLEAF_SITE_URL` er riktig satt.
</Warning>

Tilgangstokener fra GitLab utløper etter to timer. Overleaf fornyer dem med refresh-tokenet som GitLab utsteder sammen med dem, slik at brukerne forblir tilkoblet til de kobler fra eller trekker tilbake applikasjonen i GitLab.

### Selvdriftet GitLab

Sett `GITLAB_SYNC_URL` til nettadressen til instansen din, den du åpner prosjekter med i nettleseren. REST-API-et utledes fra denne:

| Variabel | Standard |
| - | - |
| `GITLAB_SYNC_URL` | `https://gitlab.com` |
| `GITLAB_SYNC_API_URL` | `${GITLAB_SYNC_URL}/api/v4` |

Sett bare `GITLAB_SYNC_API_URL` når instansen din leverer API-et et annet sted, for eksempel bak en API-gateway.

<Warning>
  * Opprett OAuth-applikasjonen på instansen du angir i `GITLAB_SYNC_URL`, en applikasjon fra `gitlab.com` fungerer ikke på en selvdriftet instans.
  * `GITLAB_SYNC_URL` er kun nettadressen. Ikke legg til `/api/v4` eller en gruppesti.
</Warning>

<Info>
  Hvis instansen din bruker et sertifikat fra en privat CA, monterer du CA-sertifikatet i containeren og lar `NODE_EXTRA_CA_CERTS` peke til det, f.eks. `NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/gitlab-ca.pem`.
</Info>

<Danger>
  Koblede kontoer og prosjekter tilhører instansen de ble koblet til. Før du bytter `GITLAB_SYNC_URL` til en annen instans, må du be brukerne om å koble fra GitLab-kontoen og prosjektene sine.
</Danger>

Hvis du befinner deg i en region med begrenset nettverkstilgang, kan det hende du må konfigurere en proxy for å få tilgang til GitLab. Sett følgende miljøvariabel: `GITLAB_SYNC_PROXY_URL=http://10.0.0.1:10808`. Det må være en vanlig HTTP/HTTPS-videresendingsproxy, og den må ikke bruke `127.0.0.1`.

### Hvem kan koble til og synkronisere

I likhet med Overleaf Cloud er det bare prosjekteieren som kan koble et prosjekt til et GitLab-repositorium. Når det er koblet til, kan alle samarbeidspartnere med redigeringstilgang synkronisere det.

| Handling | Hvem kan gjøre det |
| - | - |
| Eksportere et prosjekt til et nytt GitLab-repositorium | Prosjekteieren |
| Importere et GitLab-repositorium til et nytt prosjekt | Enhver bruker, som blir eier av det nye prosjektet |
| Hente, pushe og slå sammen et koblet prosjekt | Eieren og samarbeidspartnere med redigeringstilgang |
| Koble et prosjekt fra repositoriet sitt | Prosjekteieren |

* Overleaf kommuniserer med GitLab via GitLab-kontoen til brukeren som synkroniserer, så alle samarbeidspartnere som synkroniserer, kobler til sin egen GitLab-konto og må ha tillatelse til å pushe til standardgrenen i repositoriet.
* Samarbeidspartnere med kun lesetilgang kan ikke bruke GitLab-synkronisering for prosjektet.

### Slik fungerer synkronisering med GitLab

* **Tillatelser**: brukere må ha tillatelse til å pushe til standardgrenen i det koblede prosjektet. Når standardgrenen er beskyttet og brukeren ikke har lov til å pushe til den, ber Overleaf dem kontakte prosjekteieren, som for et repositorium de har mistet tilgang til.
* **Sammenslåing**: når et prosjekt er endret både i Overleaf og i GitLab, committer Overleaf endringene sine til en midlertidig gren kalt `overleaf-YYYY-MM-DD-HHMMSS` og slår den sammen via en merge request, fordi GitLab ikke har noe API for å slå sammen grener uten. Etter sammenslåingen sletter Overleaf den midlertidige grenen og merge requesten. Bare administratorer og prosjekteiere kan slette merge requests i GitLab, så for andre brukere blir den sammenslåtte merge requesten liggende i prosjektet.
* **Regler for sammenslåing**: Overleaf omgår aldri prosjektets regler for sammenslåing. Når merge requesten har en konflikt, eller krever en godkjenning eller en vellykket pipeline, forblir den åpen, og Overleaf ber brukeren slå den sammen i GitLab og deretter fortsette synkroniseringen.
* **Pipelines**: commits fra Overleaf starter pipelines som alle andre commits. Hvis prosjektet ditt kjører pipelines for merge requests og krever at de lykkes, venter sammenslåinger fra Overleaf på dem, som beskrevet ovenfor.

### Q\&A

<Accordion title="Kan jeg force-pushe til standardgrenen?">
  <strong>Svar:</strong> La force push til standardgrenen være deaktivert. Dette er standard i GitLab: standardgrenen i et nytt prosjekt er beskyttet, og ingen kan force-pushe til den. Overleaf kan overta en omskrevet gren, men GitLab-synkronisering er laget for en standardgren der historikken bare vokser.
</Accordion>

<Accordion title="Kan jeg gi nytt navn til standardgrenen i et koblet prosjekt?">
  <strong>Svar:</strong> Nei. Overleaf fortsetter å synkronisere med grenen prosjektet ble koblet til, så synkroniseringer mislykkes når den grenen får nytt navn eller fjernes. For å synkronisere med en annen gren kobler du fra prosjektet og importerer deretter repositoriet til et nytt prosjekt, som bruker den gjeldende standardgrenen.
</Accordion>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.