> ## 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 集成会在磁盘上为每个被用户克隆的项目存储一个完整的 git 仓库。如果磁盘空间有限，你可以启用一个交换任务，将较少使用的仓库移动到 AWS S3。如果再次需要已交换的仓库，它会被移回磁盘。以下环境变量用于控制交换任务：

| 名称 | 描述 |
| - | - |
| `GIT_BRIDGE_SWAPSTORE_TYPE` | 设置为 "s3" 以启用交换任务。 |
| `GIT_BRIDGE_SWAPSTORE_AWS_ACCESS_KEY` | 你的 AWS 访问密钥 |
| `GIT_BRIDGE_SWAPSTORE_AWS_SECRET` | 你的 AWS 密钥（secret） |
| `GIT_BRIDGE_SWAPSTORE_S3_BUCKET_NAME` | 该存储桶将存放压缩后的 git 仓库 |
| `GIT_BRIDGE_SWAPSTORE_AWS_REGION` | 存储桶所在区域 |
| `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 的权限模型是如何工作的？">
  具有只读权限的用户只能克隆该项目；具有读写权限的用户可以克隆和推送项目。注意：用户需要登录后才能加入该项目。
</Accordion>


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