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

# Integrasi Git

> Izinkan pengguna melakukan clone, pull, dan push proyek mereka dengan Git melalui git-bridge.

Integrasi Git saat ini tersedia di [ayaka-notes/overleaf](https://github.com/ayaka-notes/overleaf).

> [!NOTE]
>
> Fitur ini awalnya dikembangkan oleh [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro).

**1. Aktifkan git-bridge (Hanya untuk pengguna Toolkit)**

Jika Anda menggunakan Toolkit, aktifkan `git-bridge` dengan mengatur hal berikut di `config/overleaf.rc` Anda:

```text title="config/overleaf.rc" theme={null}
GIT_BRIDGE_ENABLED=true
```

Toolkit mengabaikannya kecuali `SERVER_PRO=true` juga diatur. Tidak ada hal lain yang diperlukan: Toolkit mengatur `GIT_BRIDGE_HOST`, `GIT_BRIDGE_PORT`, dan `V1_HISTORY_URL` untuk container `sharelatex` dengan sendirinya, jadi lewati dua langkah Docker Compose di bawah. Jalankan `bin/up` untuk membuat ulang container.

**2. Tambahkan container git-bridge (Hanya untuk pengguna Docker-compose)**

Bagi pengguna yang menjalankan `docker-compose.yml` kustom, tambahkan konfigurasi container berikut ke file compose Anda:

```yaml title="docker-compose.yml (git-bridge service)" wrap theme={null}
git-bridge:
    restart: always
    image: ghcr.io/ayaka-notes/overleaf-pro/git-bridge:6.3.2 # tag should match the `sharelatex` container tag
    volumes:
        - ~/git_bridge_data:/data/git-bridge
    container_name: git-bridge
    expose:
        - "8000"
    environment:
        GIT_BRIDGE_API_BASE_URL: "http://sharelatex:3000/api/v0/" 
        GIT_BRIDGE_OAUTH2_SERVER: "http://sharelatex"
        GIT_BRIDGE_POSTBACK_BASE_URL: "http://git-bridge:8000"
        GIT_BRIDGE_ROOT_DIR: "/data/git-bridge"
    user: root
    command: ["/server-pro-start.sh"]
```

Gunakan tag yang sama dengan image `sharelatex`. [MCP Server](https://ayakaleaf-pro.mintlify.site/id/on-premises/configuration/overleaf-toolkit/integrations/mcp-server.md) (v6.3.1 dan yang lebih baru) merupakan bagian dari image `sharelatex` dan diaktifkan bersama integrasi Git, sehingga tidak memerlukan kontainer tambahan.

**3. Perbarui konfigurasi container sharelatex**

Anda juga perlu menautkan container `git-bridge` di container `sharelatex` dan mendefinisikan variabel lingkungan berikut, harap perhatikan `V1_HISTORY_URL`:

```yaml title="docker-compose.yml (sharelatex service)" theme={null}
sharelatex:
    links:
        - git-bridge
    environment:
         GIT_BRIDGE_ENABLED: true
         GIT_BRIDGE_HOST: "git-bridge"
         GIT_BRIDGE_PORT: "8000"
         # We use v1 now, if you used to set V1_HISTORY_URL, please update now
         V1_HISTORY_URL: "http://sharelatex:3100/api"
```

**4. Autentikasi**

Saat mengautentikasi klien git, pengguna memerlukan Personal Access Token. Pengguna dapat mengelola Personal Access Token melalui UI aplikasi (lihat dokumentasi):

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

Personal Access Token Integrasi Git

**5. Pemantauan dan pertimbangan sumber daya**

Kami menyarankan Anda memantau sumber daya host setelah mengaktifkan `git-bridge`. Peningkatan beban akan bergantung pada:

* jumlah pengguna yang mengakses fitur ini
* jenis proyek yang di-host di instans Anda (proyek yang lebih besar umumnya lebih banyak menggunakan sumber daya)

### Memindahkan (swap) proyek ke S3

Integrasi Git menyimpan repositori git lengkap di disk untuk setiap proyek yang di-clone oleh pengguna. Jika ruang disk Anda terbatas, Anda dapat mengaktifkan swap job yang akan memindahkan repositori yang jarang digunakan ke AWS S3. Jika repositori yang telah di-swap dibutuhkan lagi, repositori tersebut akan dipindahkan kembali ke disk. Variabel lingkungan berikut mengontrol swap job:

| Nama | Deskripsi |
| - | - |
| `GIT_BRIDGE_SWAPSTORE_TYPE` | Atur ke "s3" untuk mengaktifkan swap job. |
| `GIT_BRIDGE_SWAPSTORE_AWS_ACCESS_KEY` | Access key AWS Anda |
| `GIT_BRIDGE_SWAPSTORE_AWS_SECRET` | Secret AWS Anda |
| `GIT_BRIDGE_SWAPSTORE_S3_BUCKET_NAME` | Bucket ini akan berisi repositori git yang telah di-zip |
| `GIT_BRIDGE_SWAPSTORE_AWS_REGION` | Region bucket |
| `GIT_BRIDGE_SWAPJOB_MIN_PROJECTS` | Jumlah minimum proyek yang disimpan di disk. **- Default:** 50 |
| `GIT_BRIDGE_SWAPJOB_LOW_GIB` | Batas bawah untuk swapping. Swap job akan memindahkan proyek hingga penggunaan disk berada di bawah nilai ini. **- Default:** 128 GB |
| `GIT_BRIDGE_SWAPJOB_HIGH_GIB` | Batas atas untuk swapping. Swap job akan mulai melakukan swapping saat penggunaan disk mencapai nilai ini. **- Default:** 256 GB |
| `GIT_BRIDGE_SWAPJOB_INTERVAL_MILLIS` | Jeda waktu antara pemeriksaan penggunaan disk dan menjalankan swap job. **- Default:** 3600000 ms = 1 jam |

### Tanya Jawab

> [accordion] Jika saya membagikan proyek saya kepada orang lain, bagaimana model izin Git Bridge bekerja?
>
> Pengguna dengan akses baca saja hanya dapat melakukan clone proyek ini; pengguna dengan akses baca-tulis dapat melakukan clone dan push proyek. Catatan: Pengguna harus login untuk bergabung ke proyek ini.

> [accordion] Bagaimana cara meng-clone proyek, dan nama pengguna serta kata sandi apa yang harus saya gunakan?
>
> Di editor, buka **Integrations** di rail kiri dan klik **Git integration**. Di sana ditampilkan perintah clone, dalam bentuk:
>
> ```sh theme={null}
> git clone https://<your-overleaf>/git/<project_id>
> ```
>
> Saat Git meminta kredensial, masukkan `git` sebagai nama pengguna dan Personal Access Token sebagai kata sandi. Buat token di **Account Settings**; token berlaku selama satu tahun. Kata sandi akun Anda tidak akan berfungsi.
>
> Perubahan tidak disinkronkan secara otomatis: gunakan `git pull` untuk mendapatkan perubahan yang dibuat di editor dan `git push` untuk mengirim perubahan Anda. Path `/git` disajikan oleh kontainer `sharelatex`, sehingga reverse proxy di depannya tidak memerlukan aturan tambahan.

> [accordion] `git push` gagal dengan `HTTP 413` atau `curl 55 Broken pipe`
>
> Ukuran push melebihi batas ukuran unggahan, yang diatur oleh `MAX_UPLOAD_SIZE` (dalam megabyte, `50` secara default) dan juga berlaku untuk push. Naikkan nilainya di `config/variables.env`, misalnya `MAX_UPLOAD_SIZE=200`, lalu jalankan `bin/up -d`. Jika Anda menggunakan [TLS proxy](https://ayakaleaf-pro.mintlify.site/id/on-premises/configuration/overleaf-toolkit/tls-proxy.md) atau reverse proxy Anda sendiri, naikkan juga `client_max_body_size`-nya (`50M` di `config/nginx/nginx.conf` milik Toolkit).
>
> git-bridge juga menolak file yang lebih besar dari 50 MB dan proyek dengan lebih dari 2.000 file. Batas ini diatur oleh `GIT_BRIDGE_REPOSTORE_MAX_FILE_SIZE` (dalam byte) dan `GIT_BRIDGE_REPOSTORE_MAX_FILE_NUM` di `config/variables.env`.

> [accordion] Log git-bridge menampilkan `Failed to fetch log level`
>
> Peringatan ini tidak berbahaya, dan clone, pull, serta push tetap berfungsi. Di 6.2.x, git-bridge meminta level log ke server metadata Google Cloud (`metadata.google.internal`) sekali per menit, yang hanya berfungsi di Google Cloud. Di tempat lain permintaan tersebut gagal, git-bridge mencatat error-nya (seperti `null` atau status HTTP) dan tetap menggunakan level dari `GIT_BRIDGE_LOG_LEVEL`. Mulai 6.3.0 pemeriksaan ini dinonaktifkan, dan upgrade juga memperbarui image git-bridge, yang versinya mengikuti image utama.

> [accordion] Apakah saya memerlukan layanan track-changes atau `OVERLEAF_IS_SERVER_PRO=true` untuk Git dan riwayat proyek lengkap?
>
> **Jawaban:** Tidak. Ayakaleaf Pro tidak memiliki layanan track-changes. Riwayat proyek disimpan oleh layanan `project-history` dan `history-v1`, yang selalu berjalan di dalam container `sharelatex`. git-bridge membaca riwayat dari `history-v1` di `V1_HISTORY_URL` (`http://sharelatex:3100/api`), yang diatur oleh Toolkit. Jangan atur `OVERLEAF_IS_SERVER_PRO`: tidak ada fitur yang bergantung padanya, variabel ini hanya mengalihkan migrasi database yang dijalankan saat startup ke set Server Pro.


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