> ## 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)이 필요합니다. 사용자는 애플리케이션 UI에서 개인 액세스 토큰을 관리할 수 있습니다(문서 참조).

    <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 시크릿 |
| `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> |

### Q\&A

<Accordion title="프로젝트를 다른 사람과 공유하면 Git Bridge 권한 모델은 어떻게 작동하나요?">
  읽기 전용 권한이 있는 사용자는 프로젝트를 클론만 할 수 있고, 읽기/쓰기 권한이 있는 사용자는 프로젝트를 클론하고 푸시할 수 있습니다. 참고: 이 프로젝트에 참여하려면 로그인해야 합니다.
</Accordion>


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