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

<Info>
  Bu özellik [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro) tarafından geliştirilmiştir. v6.4.0 ve sonrasında sunulmuştur. Hâlâ beta aşamasındadır. Herhangi bir sorun yaşarsanız geri bildiriminize ihtiyacımız var.
</Info>

GitLab Senkronizasyonu, [GitHub Senkronizasyonu](/tr/on-premises/configuration/overleaf-toolkit/github-synchronisation) gibi çalışır: kullanıcılar GitLab hesaplarını bağlar, projeleri yeni GitLab projelerine dışa aktarır, GitLab depolarını içe aktarır ve değişiklikleri her iki yönde senkronize eder. GitLab.com ile ve kendi yönettiğiniz GitLab 15.10 veya sonraki sürümleriyle (Community ve Enterprise Edition) çalışır.

### GitLab Senkronizasyonunu Kurma

<Warning>
  GitLab Senkronizasyonunu kullanmadan önce [git-bridge](/tr/on-premises/configuration/overleaf-toolkit/git-integration) özelliğini etkinleştirmeniz gerekir.

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

GitLab örneğinizde *User settings → Applications* altında (örnek genelinde bir uygulama için *Admin area → Applications* altında) bir OAuth uygulaması oluşturun:

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

**Application ID** ve **Secret** değerlerini kopyalayın, ardından aşağıdaki ayarları Overleaf ortam değişkeni dosyalarınıza ekleyin.

```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>
  GitLab OAuth yönlendirme URI'sini yapılandırmadan önce `OVERLEAF_SITE_URL` değerinin doğru ayarlandığından emin olun.
</Warning>

GitLab erişim belirteçlerinin süresi iki saat sonra dolar. Overleaf bunları, GitLab'ın erişim belirteçleriyle birlikte verdiği yenileme belirteciyle yeniler; böylece kullanıcılar, bağlantıyı kaldırana veya uygulamayı GitLab'da iptal edene kadar bağlı kalır.

### Kendi yönettiğiniz GitLab

`GITLAB_SYNC_URL` değerini örneğinizin web adresine, yani projeleri tarayıcıda açtığınız adrese ayarlayın. REST API adresi bundan türetilir:

| Değişken | Varsayılan |
| - | - |
| `GITLAB_SYNC_URL` | `https://gitlab.com` |
| `GITLAB_SYNC_API_URL` | `${GITLAB_SYNC_URL}/api/v4` |

`GITLAB_SYNC_API_URL` değerini yalnızca örneğiniz API'yi başka bir yerde sunuyorsa (örneğin bir API ağ geçidinin arkasında) ayarlayın.

<Warning>
  * OAuth uygulamasını `GITLAB_SYNC_URL` içinde ayarladığınız örnekte oluşturun; `gitlab.com` üzerinde oluşturulmuş bir uygulama, kendi yönettiğiniz bir örnekte çalışmaz.
  * `GITLAB_SYNC_URL` yalnızca web adresidir. `/api/v4` veya bir grup yolu eklemeyin.
</Warning>

<Info>
  Örneğiniz özel bir CA'dan alınmış bir sertifika kullanıyorsa, CA sertifikasını konteynere bağlayın ve `NODE_EXTRA_CA_CERTS` değişkenini bu dosyayı gösterecek şekilde ayarlayın, ör. `NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/gitlab-ca.pem`.
</Info>

<Danger>
  Bağlanan hesaplar ve projeler, bağlandıkları örneğe aittir. `GITLAB_SYNC_URL` değerini başka bir örneğe geçirmeden önce kullanıcılardan GitLab hesaplarının ve projelerinin bağlantısını kaldırmalarını isteyin.
</Danger>

Ağ erişiminin kısıtlı olduğu bir bölgede bulunuyorsanız, GitLab'a erişmek için bir proxy yapılandırmanız gerekebilir. Şu ortam değişkenini ayarlayın: `GITLAB_SYNC_PROXY_URL=http://10.0.0.1:10808`. Bu, standart bir HTTP/HTTPS ileri proxy'si olmalı ve `127.0.0.1` kullanmamalıdır.

### Kimler bağlayabilir ve senkronize edebilir

Overleaf Cloud'da olduğu gibi, bir projeyi bir GitLab deposuna yalnızca proje sahibi bağlayabilir. Bağlandıktan sonra, düzenleme erişimine sahip her ortak çalışan projeyi senkronize edebilir.

| İşlem | Kimler yapabilir |
| - | - |
| Bir projeyi yeni bir GitLab deposuna dışa aktarma | Proje sahibi |
| Bir GitLab deposunu yeni bir projeye içe aktarma | Herhangi bir kullanıcı; bu kullanıcı yeni projenin sahibi olur |
| Bağlı bir projeyi çekme, gönderme ve birleştirme | Proje sahibi ve düzenleme erişimine sahip ortak çalışanlar |
| Bir projenin deposuyla bağlantısını kaldırma | Proje sahibi |

* Overleaf, GitLab ile senkronizasyonu yapan kullanıcının GitLab hesabı üzerinden iletişim kurar; bu nedenle senkronizasyon yapan her ortak çalışan kendi GitLab hesabını bağlar ve deponun varsayılan dalına gönderme (push) izni olması gerekir.
* Yalnızca görüntüleme erişimine sahip ortak çalışanlar, proje için GitLab Senkronizasyonunu kullanamaz.

### GitLab ile senkronizasyon nasıl çalışır

* **İzinler**: kullanıcıların bağlı projenin varsayılan dalına gönderme izni olmalıdır. Varsayılan dal korumalıysa ve kullanıcı bu dala gönderme yapamıyorsa, Overleaf erişimini kaybettikleri bir depoda olduğu gibi kullanıcıdan proje sahibiyle iletişime geçmesini ister.
* **Birleştirme**: bir proje hem Overleaf'te hem de GitLab'da değiştiğinde, Overleaf değişikliklerini `overleaf-YYYY-MM-DD-HHMMSS` adlı geçici bir dala işler ve bunu bir merge request aracılığıyla birleştirir; çünkü GitLab'da merge request olmadan dalları birleştirmeye yarayan bir API yoktur. Birleştirmeden sonra Overleaf geçici dalı ve merge request'i siler. GitLab'da merge request'leri yalnızca yöneticiler ve proje sahipleri silebilir; bu nedenle diğer kullanıcılar için birleştirilmiş merge request projede kalır.
* **Birleştirme kuralları**: Overleaf, projenin birleştirme kurallarını asla atlamaz. Merge request'te bir çakışma olduğunda veya bir onay ya da başarılı bir pipeline gerektiğinde, merge request açık kalır ve Overleaf kullanıcıdan bunu GitLab'da birleştirmesini, ardından senkronizasyona devam etmesini ister.
* **Pipeline'lar**: Overleaf'ten gelen commit'ler, diğer tüm commit'ler gibi pipeline'ları başlatır. Projeniz merge request'ler için pipeline çalıştırıyor ve bunların başarılı olmasını gerektiriyorsa, Overleaf'ten gelen birleştirmeler yukarıda açıklandığı gibi bunları bekler.

### Q\&A

<Accordion title="Varsayılan dala zorla gönderme (force push) yapabilir miyim?">
  <strong>Yanıt:</strong> Lütfen varsayılan dala zorla gönderimleri devre dışı bırakılmış olarak tutun. Bu, GitLab'ın varsayılan davranışıdır: yeni bir projenin varsayılan dalı korumalıdır ve kimse bu dala zorla gönderme yapamaz. Overleaf yeniden yazılmış bir dalı devralabilir, ancak GitLab Senkronizasyonu geçmişi yalnızca büyüyen bir varsayılan dal için tasarlanmıştır.
</Accordion>

<Accordion title="Bağlı bir projenin varsayılan dalını yeniden adlandırabilir miyim?">
  <strong>Yanıt:</strong> Hayır. Overleaf, projenin bağlandığı dalla senkronize olmaya devam eder; bu nedenle o dal yeniden adlandırıldığında veya kaldırıldığında senkronizasyonlar başarısız olur. Başka bir dalla senkronize etmek için projenin bağlantısını kaldırın, ardından depoyu yeni bir projeye içe aktarın; yeni proje mevcut varsayılan dalı kullanır.
</Accordion>


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