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

# GitHub Senkronizasyonu

> Kullanıcıların projelerini GitHub veya GitHub Enterprise depolarıyla senkronize etmesini sağlayın.

> [!NOTE]
>
> Bu özellik [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro) tarafından geliştirilmiş ve [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep) tarafından değiştirilmiştir. v6.2.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.

![](https://mintcdn.com/ayakaleaf-pro/UZ_4Jfz7cU6MnXtE/images/on-premises/image-36.png?fit=max\&auto=format\&n=UZ_4Jfz7cU6MnXtE\&q=85\&s=fd5305cbb4ea8505b5eab6f41f90a57c)

![](https://mintcdn.com/ayakaleaf-pro/UZ_4Jfz7cU6MnXtE/images/on-premises/image-39.png?fit=max\&auto=format\&n=UZ_4Jfz7cU6MnXtE\&q=85\&s=1d8103102915872ba94119bb00fa58e0)

![](https://mintcdn.com/ayakaleaf-pro/UZ_4Jfz7cU6MnXtE/images/on-premises/image-35.png?fit=max\&auto=format\&n=UZ_4Jfz7cU6MnXtE\&q=85\&s=18c0d0917b5c3768593a608a53b6c19c)

![](https://mintcdn.com/ayakaleaf-pro/UZ_4Jfz7cU6MnXtE/images/on-premises/image-40.png?fit=max\&auto=format\&n=UZ_4Jfz7cU6MnXtE\&q=85\&s=7ebf71a5528a1b22e1e2c7f17a71b49a)

### GitHub Senkronizasyonunu Kurma

> [!WARNING]
>
> GitHub Senkronizasyonunu kullanmadan önce [git-bridge](https://ayakaleaf-pro.mintlify.site/tr/on-premises/configuration/overleaf-toolkit/integrations/git-integration.md) özelliğini etkinleştirmeniz gerekir.
>
> ```dotenv title="config/overleaf.rc" theme={null}
> GIT_BRIDGE_ENABLED=true
> ```

GitHub OAuth uygulamanızı oluşturmak için [geliştirici ayarlarını](https://github.com/settings/developers) ziyaret edin ve `CLIENT_ID` ile `SECRET` değerlerinizi kopyalayın.

**Notlar**: OAuth App'i oluştururken **Authorization callback URL** alanına `${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callback` girin. Ayakaleaf Pro aynı adresi `OVERLEAF_SITE_URL` değerinden oluşturur; bu nedenle `config/variables.env` içinde bunun için ayarlanacak bir şey yoktur.

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 GitHub access token.
# How to generate: `openssl rand -hex 32`
GITHUB_TOKEN_CIPHER_PASSWORD=0123456789ABCDEFG # changed to yours

# Github Sync Settings
GITHUB_SYNC_ENABLED=true
GITHUB_SYNC_CLIENT_ID=
GITHUB_SYNC_CLIENT_SECRET=

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

> [!WARNING]
>
> GitHub OAuth geri çağırma URL'sini yapılandırmadan önce `OVERLEAF_SITE_URL` değerinin doğru ayarlandığından emin olun.

Ağ erişiminin kısıtlı olduğu bir bölgede bulunuyorsanız, GitHub'a erişmek için bir proxy yapılandırmanız gerekebilir. Şu ortam değişkenini ayarlayın: `GITHUB_SYNC_PROXY_URL=http://10.0.0.1:10808`. Lütfen proxy kullanımınızın yerel yasa ve düzenlemelere uygun olduğundan emin olun.

> [!WARNING]
>
> `GITHUB_SYNC_PROXY_URL` standart bir HTTP/HTTPS ileri proxy'si olmalıdır (ör. Clash'in HTTP portu). `gh-proxy.org` gibi GitHub indirme aynaları desteklenmez.

> [!WARNING]
>
> Proxy ana bilgisayarı için `127.0.0.1` kullanmayın. Proxy ana sunucuda çalışıyorsa, sunucunun LAN IP adresini (`192.168.1.xx` gibi) kullanın ve proxy'nin yerel ağdaki cihazlardan gelen bağlantıları kabul edecek şekilde yapılandırıldığından emin olun.

### GitHub Enterprise

> [!NOTE]
>
> GitHub Enterprise desteği v6.3.1 ve sonrasında sunulmuştur. Önceki sürümler yalnızca `github.com` adresine bağlanır ve aşağıdaki değişkenlerin hiçbir etkisi yoktur.

GitHub Senkronizasyonu varsayılan olarak `github.com` adresine bağlanır. GitHub Enterprise Server (kendi barındırdığınız) veya veri yerleşimli GitHub Enterprise Cloud (`GHE.com`) kullanmak için `GITHUB_SYNC_URL` değerini örneğinizin web adresine, yani depoları tarayıcıda açtığınız adrese ayarlayın.

```dotenv title="config/variables.env" wrap theme={null}
# GitHub Enterprise Server
GITHUB_SYNC_URL=https://github.example.com

# or GitHub Enterprise Cloud with data residency
# GITHUB_SYNC_URL=https://octocorp.ghe.com
```

REST ve GraphQL API uç noktaları, GitHub CLI'nin yaptığı gibi `GITHUB_SYNC_URL` değerinden türetilir:

| `GITHUB_SYNC_URL` | REST API | GraphQL API |
| - | - | - |
| `https://github.com` (varsayılan) | `https://api.github.com` | `https://api.github.com/graphql` |
| `https://SUBDOMAIN.ghe.com` | `https://api.SUBDOMAIN.ghe.com` | `https://api.SUBDOMAIN.ghe.com/graphql` |
| `https://HOST` (diğer tümü) | `https://HOST/api/v3` | `https://HOST/api/graphql` |

API uç noktalarını yalnızca örneğiniz bunları başka bir yerde sunuyorsa (örneğin bir API ağ geçidinin arkasında) ayarlayın:

| Değişken | Varsayılan |
| - | - |
| `GITHUB_SYNC_URL` | `https://github.com` |
| `GITHUB_SYNC_API_URL` | `GITHUB_SYNC_URL` değerinden türetilir, yukarıdaki tabloya bakın |
| `GITHUB_SYNC_GRAPHQL_URL` | Ayarlanmışsa `GITHUB_SYNC_API_URL` değerinden türetilir (`/api/v3`, `/api/graphql` olur; aksi takdirde sonuna `/graphql` eklenir), aksi halde `GITHUB_SYNC_URL` değerinden türetilir |

> [!WARNING]
>
> * OAuth uygulamasını kurumsal örneğinizde oluşturun (*Settings → Developer settings → OAuth Apps*); `github.com` üzerinde oluşturulmuş bir uygulama orada çalışmaz. Geri çağırma URL'si aynıdır: `${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callback`.
> * `GITHUB_SYNC_URL` yalnızca web adresidir. Bunu `https://api.github.com` veya `https://HOST/api/v3` gibi bir API adresine ayarlamayın ve bir organizasyon yolu eklemeyin.
> * Üç adresin tümü aynı GitHub örneğini göstermelidir.

> [!NOTE]
>
> Ö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/github-ca.pem`.

> [!CAUTION]
>
> Bağlanan hesaplar ve projeler, bağlandıkları örneğe aittir. `GITHUB_SYNC_URL` değerini başka bir örneğe geçirmeden önce kullanıcılardan GitHub hesaplarının ve projelerinin bağlantısını kaldırmalarını isteyin.

### Kimler bağlayabilir ve senkronize edebilir

Overleaf Cloud'da olduğu gibi, bir projeyi bir GitHub 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 GitHub deposuna dışa aktarma | Proje sahibi |
| Bir GitHub 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, GitHub ile senkronizasyonu yapan kullanıcının GitHub hesabı üzerinden iletişim kurar; bu nedenle senkronizasyon yapan her ortak çalışan kendi GitHub 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 GitHub Senkronizasyonunu kullanamaz.

### Q\&A

> [accordion] Bir projeyi GitHub'a nasıl bağlar ve senkronize ederim?
>
> **Yanıt:** Düzenleyicide **Integrations** bölümünü açın ve **GitHub** öğesine tıklayın. GitHub hesabınız henüz bağlı değilse önce **Link to your GitHub account** öğesine tıklayın. **Export Project to GitHub** bölümünde bir depo adı girin, **Repository visibility** altında **Private** seçeneğini belirleyin ve **Create a GitHub repository** öğesine tıklayın.
>
> Bundan sonra aynı kart, GitHub'daki yeni commit'leri listeleyen **Sync with GitHub** bölümünü açar. Overleaf değişikliklerinizi varsayılan dala commit etmek ve GitHub değişikliklerini projeye almak için **Sync** öğesine tıklayın. Senkronizasyon iki yönlüdür ancak yalnızca biri **Sync** öğesine tıkladığında çalışır; zamanlanmış bir senkronizasyon yoktur. Her iki tarafta da değişiklik olduğunda Overleaf, `overleaf-YYYY-MM-DD-HHMMSS` adlı geçici bir dal üzerinden birleştirme yapar. Bu birleştirmede bir çakışma olursa dalı GitHub'da kendiniz birleştirin, ardından **I have manually merged. Continue** öğesine tıklayın.

> [accordion] Varsayılan dala zorla gönderme (force push) yapabilir miyim?
>
> **Yanıt:** Önermiyoruz. Overleaf zorla gönderimi algılar, bu konuda uyarır ve yeniden yazılmış dalı devralarak son senkronizasyondan bu yana Overleaf'te yapılan değişiklikleri birleştirir. Sürprizlerle karşılaşmamak için depo ayarlarında varsayılan dalı zorla gönderimlere karşı koruyun.

> [accordion] Bağlı bir projenin varsayılan dalını yeniden adlandırabilir miyim?
>
> **Yanıt:** Lütfen yapmayın. Overleaf, projenin bağlandığı dalla senkronize olmaya devam eder. 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] GitHub senkronizasyonu "Something wrong with GitHub request" mesajını gösteriyor
>
> **Yanıt:** Bu mesaj, sunucunun GitHub'a ulaşamadığı anlamına gelir; örneğin bir ağ, DNS, TLS veya proxy sorunu nedeniyle. Tam hatayı görmek için `bin/logs web` komutunu çalıştırın. Sunucunun GitHub'a ulaşmak için bir proxy'ye ihtiyacı varsa `GITHUB_SYNC_PROXY_URL` değerini ayarlayın.

> [accordion] GitHub OAuth App içinde "Expire user access tokens" seçeneğini devre dışı bırakmalı mıyım?
>
> **Yanıt:** Evet. GitHub senkronizasyonu süresi dolan token'ları yenilemez. Süresi dolan token'lar etkinken kullanıcıların, token'larının süresi her dolduğunda GitHub'ı yeniden bağlaması gerekir.

> [accordion] Örneğimin internetten erişilebilir olması gerekiyor mu?
>
> **Yanıt:** Hayır. Bir hesabın bağlanması kullanıcının tarayıcısı üzerinden gerçekleşir; bu nedenle OAuth geri çağırma adresinin yalnızca kullanıcının tarayıcısında açılabilmesi yeterlidir. Sunucunun yalnızca GitHub'ya ulaşabilmesi gerekir; bunun için bir proxy gerekiyorsa `GITHUB_SYNC_PROXY_URL` değerini ayarlayın. GitHub örneğinizi hiçbir zaman çağırmaz: bir proje yalnızca bir kullanıcı onu düzenleyicide senkronize ettiğinde senkronize edilir.

> [accordion] GitHub hesabımı bağlama başarısız oluyor veya bağlamadan beni geri gönderiyor
>
> **Yanıt:** Şunları sırayla kontrol edin:
>
> * Overleaf'i tam olarak `OVERLEAF_SITE_URL` içinde ayarlanan adreste açın. GitHub sizi `${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callback` adresine geri gönderir ve oturumunuz yalnızca başladığınız adreste geçerlidir; bu nedenle başka bir ana makine, IP veya bağlantı noktası oturum açma sayfasında ya da “Restricted, sorry you don’t have permission to load this page” mesajında sona erer.
> * OAuth App'in **Authorization callback URL** değeri aynı şema, ana makine ve bağlantı noktasıyla `${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callback` olmalıdır.
> * `Failed to obtain access token from Git server` içeren bir hata sayfası, GitHub'ın bir belirteç döndürmediği anlamına gelir: `GITHUB_SYNC_CLIENT_ID` ve `GITHUB_SYNC_CLIENT_SECRET` değerlerini ve sunucunun GitHub'a erişebildiğini kontrol edin. Hatanın tamamını görmek için `bin/logs web` komutunu çalıştırın.
>
> `config/variables.env` dosyasını değiştirdikten sonra konteynerleri yeniden oluşturmak için `bin/up` komutunu çalıştırın.

> [accordion] Bir depoyu içe aktarma “EmptyZipFileError: empty\_zip\_file” veya “unzip failed” hatasıyla başarısız oluyor
>
> **Yanıt:** Overleaf, deponun varsayılan dalındaki en son commit'in zip arşivini içe aktarır ve bu hata, arşivde Overleaf'in içe aktarabileceği hiçbir dosya olmadığı anlamına gelir. GitHub'da varsayılan dalı kontrol edin:
>
> * Dal, yalnızca Overleaf'in içe aktarma sırasında atladığı dosyaları değil, proje dosyalarını da içermelidir: atlanan dosyalar `.gitignore` ve `.gitmodules` gibi nokta dosyaları (`.latexmkrc` korunur) ile `*.aux`, `*.log`, `*.bbl`, `*.synctex.gz`, `*.doc` ve `*.docx` gibi derleme dosyalarıdır.
> * Dosyalar yalnızca Git alt modüllerinin içinde olmamalıdır. GitHub'ın arşivi alt modülleri boş klasörler olarak bırakır.
> * Beklediğiniz dosyalar başka bir dalda değil, varsayılan dalda olmalıdır. İçe aktarma her zaman varsayılan dalı kullanır.

> [accordion] Bir depoyu içe aktarma “sharelatex:3054” adresine “connect ECONNREFUSED” hatasıyla başarısız oluyor
>
> **Yanıt:** `V1_HISTORY_URL`, bu belgelerin eski sürümlerinde verilen bir değer olan `http://sharelatex:3054` olarak ayarlanmıştır. `3054` bağlantı noktası yalnızca konteyner içinde dinleyen `project-history` hizmetidir; oysa `V1_HISTORY_URL` değeri `history-v1` hizmetini göstermelidir. Overleaf, içe aktarılan deponun her ikili dosyasını (görseller, PDF'ler) `history-v1` hizmetine kaydeder; bu nedenle içe aktarma başarısız olur. Düzenleyicide böyle bir dosya yüklemek de aynı şekilde başarısız olur. `docker-compose.yml` dosyanızda `sharelatex` hizmetinde `V1_HISTORY_URL: "http://sharelatex:3100/api"` ayarlayın (bkz. [Git Entegrasyonu](https://ayakaleaf-pro.mintlify.site/tr/on-premises/configuration/overleaf-toolkit/integrations/git-integration.md)) ve konteyneri yeniden oluşturun. Toolkit bu değeri zaten ayarlar; `docker-compose.override.yml` dosyasının bunu geçersiz kılmadığından emin olun.


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