이 기능은 ayaka-notes/ayakaleaf-pro에서 개발했습니다. v6.4.0 이상부터 도입되었으며 아직 베타 상태입니다. 문제가 있으면 피드백을 보내주세요.
GitLab 동기화 설정
GitLab 인스턴스의 User settings → Applications(인스턴스 전체 애플리케이션의 경우 Admin area → Applications)에서 OAuth 애플리케이션을 만드세요.- Redirect URI:
${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback - Confidential: 체크
- Scopes:
api
config/variables.env
자체 관리형 GitLab
GITLAB_SYNC_URL을 인스턴스의 웹 주소, 즉 브라우저에서 프로젝트를 열 때 사용하는 주소로 설정하세요. REST API 주소는 이 값에서 파생됩니다.
인스턴스가 API를 다른 위치(예: API 게이트웨이 뒤)에서 제공하는 경우에만
GITLAB_SYNC_API_URL을 설정하세요.
인스턴스가 사설 CA에서 발급한 인증서를 사용하는 경우 CA 인증서를 컨테이너에 마운트하고
NODE_EXTRA_CA_CERTS가 이를 가리키도록 설정하세요. 예: NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/gitlab-ca.pem.연결된 계정과 프로젝트는 연결 당시의 인스턴스에 속합니다.
GITLAB_SYNC_URL을 다른 인스턴스로 변경하기 전에 사용자에게 GitLab 계정과 프로젝트의 연결을 해제하도록 요청하세요.GITLAB_SYNC_PROXY_URL=http://10.0.0.1:10808. 표준 HTTP/HTTPS 포워드 프록시여야 하며 127.0.0.1을 사용해서는 안 됩니다.
연결 및 동기화 권한
Overleaf Cloud와 마찬가지로 프로젝트 소유자만 프로젝트를 GitLab 저장소에 연결할 수 있습니다. 연결된 후에는 편집 권한이 있는 모든 공동 작업자가 동기화할 수 있습니다.- Overleaf는 동기화하는 사용자의 GitLab 계정으로 GitLab과 통신합니다. 따라서 동기화하는 모든 공동 작업자는 자신의 GitLab 계정을 연결해야 하며, 저장소의 기본 브랜치에 push할 수 있는 권한이 있어야 합니다.
- 보기 전용 공동 작업자는 해당 프로젝트에서 GitLab 동기화를 사용할 수 없습니다.
GitLab과의 동기화 방식
- 권한: 사용자는 연결된 프로젝트의 기본 브랜치에 push할 수 있는 권한이 있어야 합니다. 기본 브랜치가 보호되어 있어 사용자가 push할 수 없는 경우, 접근 권한을 잃은 저장소와 마찬가지로 Overleaf는 프로젝트 소유자에게 문의하도록 안내합니다.
- 병합: 프로젝트가 Overleaf와 GitLab 양쪽에서 변경된 경우, Overleaf는 변경 사항을
overleaf-YYYY-MM-DD-HHMMSS라는 이름의 임시 브랜치에 커밋하고 merge request를 통해 병합합니다. GitLab에는 merge request 없이 브랜치를 병합하는 API가 없기 때문입니다. 병합 후 Overleaf는 임시 브랜치와 merge request를 삭제합니다. GitLab에서는 관리자와 프로젝트 소유자만 merge request를 삭제할 수 있으므로, 다른 사용자의 경우 병합된 merge request가 프로젝트에 남아 있습니다. - 병합 규칙: Overleaf는 프로젝트의 병합 규칙을 절대 우회하지 않습니다. merge request에 충돌이 있거나 승인 또는 파이프라인 통과가 필요한 경우 merge request는 열린 상태로 유지되며, Overleaf는 사용자에게 GitLab에서 병합한 후 동기화를 계속하도록 안내합니다.
- 파이프라인: Overleaf에서 생성된 커밋도 다른 커밋과 마찬가지로 파이프라인을 시작합니다. 프로젝트에서 merge request에 대해 파이프라인을 실행하고 통과를 요구하는 경우, 위에서 설명한 대로 Overleaf의 병합은 파이프라인 완료를 기다립니다.
Q&A
기본 브랜치에 force push를 해도 되나요?
기본 브랜치에 force push를 해도 되나요?
답변: 기본 브랜치에 대한 force push는 비활성화된 상태로 유지하세요. 이는 GitLab의 기본 설정입니다. 새 프로젝트의 기본 브랜치는 보호되며 누구도 force push할 수 없습니다. Overleaf는 재작성된 브랜치를 이어받을 수 있지만, GitLab 동기화는 이력이 계속 늘어나기만 하는 기본 브랜치를 전제로 설계되었습니다.
연결된 프로젝트의 기본 브랜치 이름을 변경할 수 있나요?
연결된 프로젝트의 기본 브랜치 이름을 변경할 수 있나요?
답변: 아니요. Overleaf는 프로젝트가 연결된 브랜치와 계속 동기화하므로, 해당 브랜치의 이름이 변경되거나 삭제되면 동기화가 실패합니다. 다른 브랜치와 동기화하려면 프로젝트의 연결을 해제한 다음, 현재 기본 브랜치를 사용하는 새 프로젝트로 저장소를 가져오세요.

