> ## 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.

# Synchronizace s GitLabem

<Info>
  Tuto funkci vyvinul projekt [ayaka-notes/ayakaleaf-pro](https://github.com/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.
</Info>

Synchronizace s GitLabem funguje stejně jako [synchronizace s GitHubem](/cs/on-premises/configuration/overleaf-toolkit/github-synchronisation): uživatelé propojí svůj účet GitLab, exportují projekty do nových projektů v GitLabu, importují repozitáře z GitLabu a synchronizují změny oběma směry. Funguje s GitLab.com i se samostatně spravovaným GitLabem verze 15.10 nebo novější (Community i Enterprise Edition).

### Nastavení synchronizace s GitLabem

<Warning>
  Před použitím synchronizace s GitLabem musíte nejprve povolit [git-bridge](/cs/on-premises/configuration/overleaf-toolkit/git-integration).

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

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`

Zkopírujte **Application ID** a **Secret** a poté přidejte následující nastavení do souborů s proměnnými prostředí Overleafu.

```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>
  Před konfigurací OAuth redirect URI v GitLabu se ujistěte, že je `OVERLEAF_SITE_URL` nastaveno správně.
</Warning>

Přístupové tokeny GitLabu vyprší po dvou hodinách. Overleaf je obnovuje pomocí obnovovacího tokenu, který GitLab vydává spolu s nimi, takže uživatelé zůstávají propojeni, dokud propojení nezruší nebo dokud aplikaci v GitLabu neodvolají.

### Samostatně spravovaný GitLab

Nastavte `GITLAB_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:

| Proměnná | Výchozí hodnota |
| - | - |
| `GITLAB_SYNC_URL` | `https://gitlab.com` |
| `GITLAB_SYNC_API_URL` | `${GITLAB_SYNC_URL}/api/v4` |

`GITLAB_SYNC_API_URL` nastavujte pouze tehdy, když vaše instance poskytuje API jinde, například za API gateway.

<Warning>
  * OAuth aplikaci vytvořte na instanci, kterou nastavíte v `GITLAB_SYNC_URL`; aplikace z `gitlab.com` na samostatně spravované instanci nefunguje.
  * `GITLAB_SYNC_URL` je pouze webová adresa. Nepřidávejte `/api/v4` ani cestu ke skupině.
</Warning>

<Info>
  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`.
</Info>

<Danger>
  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ů.
</Danger>

Pokud se nacházíte v regionu s omezeným přístupem k síti, možná budete muset pro přístup ke GitLabu nakonfigurovat proxy. Nastavte následující proměnnou prostředí: `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.

| Akce | Kdo ji může provést |
| - | - |
| Export projektu do nového repozitáře GitLab | Vlastník projektu |
| Import repozitáře GitLab do nového projektu | Kterýkoli uživatel, který se stane vlastníkem nového projektu |
| Pull, push a merge propojeného projektu | Vlastník a spolupracovníci s oprávněním k úpravám |
| Zrušení propojení projektu s jeho repozitářem | Vlastník projektu |

* 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-HHMMSS` a 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

<Accordion title="Mohu do výchozí větve provést force push?">
  <strong>Odpověď:</strong> 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.
</Accordion>

<Accordion title="Mohu přejmenovat výchozí větev propojeného projektu?">
  <strong>Odpověď:</strong> 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.
</Accordion>


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