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

# Git 整合

Git 整合目前僅在 [ayaka-notes/overleaf](https://github.com/ayaka-notes/overleaf) 中提供。

<Info>
  此功能最初由 [ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro) 開發。
</Info>

<Steps>
  <Step title="啟用 git-bridge（僅限 Toolkit 使用者）">
    如果你使用的是 Toolkit，請在 `config/overleaf.rc` 中加入以下設定以啟用 `git-bridge`：

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

  <Step title="新增 git-bridge 容器（僅限 Docker-compose 使用者）">
    若你使用自訂的 `docker-compose.yml`，請將以下容器設定加入你的 compose 檔案：

    ```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.0 # 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/" 
            # "http://sharelatex/api/v0/" for version 4.1.6 and earlier
            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"]
    ```
  </Step>

  <Step title="更新 sharelatex 容器設定">
    你還需要在 `sharelatex` 容器中連結 `git-bridge` 容器，並定義以下環境變數，請特別留意 `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"
    ```
  </Step>

  <Step title="驗證">
    驗證 git 用戶端時，使用者需要個人存取權杖（Personal Access Token）。使用者可以透過應用程式介面管理個人存取權杖（請參閱說明文件）：

    <Frame caption="Git 整合的個人存取權杖">
      <img src="https://mintcdn.com/ayakaleaf-pro/x9kfDjtWlyyhG_mR/images/on-premises/image-28.png?fit=max&auto=format&n=x9kfDjtWlyyhG_mR&q=85&s=08935524562eec75d1fcd20d14791f9a" alt="" width="1374" height="869" data-path="images/on-premises/image-28.png" />
    </Frame>
  </Step>

  <Step title="監控與資源考量">
    建議你在啟用 `git-bridge` 後監控主機資源。負載增加的程度取決於：

    * 使用此功能的使用者人數
    * 執行個體中託管的專案類型（較大的專案通常會耗用較多資源）
  </Step>
</Steps>

### 將專案置換至 S3

Git 整合會為每個被使用者複製（clone）的專案，在磁碟上儲存一份完整的 git 儲存庫。如果你的磁碟空間有限，可以啟用置換工作，將較少使用的儲存庫移至 AWS S3。若再次需要已置換的儲存庫，它會被移回磁碟。以下環境變數用於控制置換工作：

| 名稱 | 說明 |
| - | - |
| `GIT_BRIDGE_SWAPSTORE_TYPE` | 設為 "s3" 即可啟用置換工作。 |
| `GIT_BRIDGE_SWAPSTORE_AWS_ACCESS_KEY` | 你的 AWS 存取金鑰 |
| `GIT_BRIDGE_SWAPSTORE_AWS_SECRET` | 你的 AWS 密鑰 |
| `GIT_BRIDGE_SWAPSTORE_S3_BUCKET_NAME` | 此 bucket 將存放壓縮後的 git 儲存庫 |
| `GIT_BRIDGE_SWAPSTORE_AWS_REGION` | bucket 所在的區域 |
| `GIT_BRIDGE_SWAPJOB_MIN_PROJECTS` | <p>磁碟上至少要保留的專案數量。<br /><br /><strong>- 預設：</strong> 50</p> |
| `GIT_BRIDGE_SWAPJOB_LOW_GIB` | <p>置換的低水位。置換工作會持續移出專案，直到磁碟使用量低於此值。<br /><br /><strong>- 預設：</strong> 128 GB</p> |
| `GIT_BRIDGE_SWAPJOB_HIGH_GIB` | <p>置換的高水位。當磁碟使用量達到此值時，置換工作便會開始置換。<br /><br /><strong>- 預設：</strong> 256 GB</p> |
| `GIT_BRIDGE_SWAPJOB_INTERVAL_MILLIS` | <p>每次檢查磁碟使用量並執行置換工作之間的間隔時間。<br /><br /><strong>- 預設：</strong> 3600000 ms = 1 小時</p> |

### 問與答

<Accordion title="如果我將專案分享給其他人，Git Bridge 的權限模型是如何運作的？">
  僅具唯讀權限的使用者只能複製（clone）此專案；具讀寫權限的使用者則可以複製並推送（push）專案。注意：使用者必須登入才能加入此專案。
</Accordion>


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