Цю функцію розроблено в ayaka-notes/ayakaleaf-pro. Вона доступна починаючи з v6.4.0. Функція все ще перебуває в стадії бета-тестування. Якщо у вас виникнуть проблеми, будемо вдячні за відгук.
Налаштування синхронізації з GitLab
Створіть OAuth-застосунок у своєму екземплярі GitLab у розділі User settings → Applications (або Admin area → Applications для застосунку на рівні всього екземпляра):- Redirect URI:
${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback - Confidential: позначено
- Scopes:
api
config/variables.env
Самостійно керований GitLab
Задайте вGITLAB_SYNC_URL вебадресу свого екземпляра — ту, за якою ви відкриваєте проєкти в браузері. Адреса REST API визначається на її основі:
Задавайте
GITLAB_SYNC_API_URL лише тоді, коли ваш екземпляр надає API за іншою адресою, наприклад за API-шлюзом.
Якщо ваш екземпляр використовує сертифікат від приватного центру сертифікації (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 не має API для злиття гілок без нього. Після злиття Overleaf видаляє тимчасову гілку та merge request. Видаляти merge request у GitLab можуть лише адміністратори та власники проєктів, тож для інших користувачів злитий merge request залишається в проєкті. - Правила злиття: Overleaf ніколи не обходить правила злиття проєкту. Якщо merge request має конфлікт або потребує схвалення чи успішного пайплайна, він залишається відкритим, і Overleaf пропонує користувачеві злити його в GitLab, а потім продовжити синхронізацію.
- Пайплайни: коміти з Overleaf запускають пайплайни, як і будь-які інші коміти. Якщо ваш проєкт запускає пайплайни для merge request і вимагає їх успішного проходження, злиття з Overleaf очікують на них, як описано вище.
Q&A
Чи можна виконувати force push у гілку за замовчуванням?
Чи можна виконувати force push у гілку за замовчуванням?
Відповідь: Будь ласка, залишайте force push у гілку за замовчуванням вимкненим. Це типова поведінка GitLab: гілка за замовчуванням нового проєкту захищена, і ніхто не може виконувати в неї force push. Overleaf може підхопити переписану гілку, але синхронізацію з GitLab розроблено для гілки за замовчуванням, історія якої лише зростає.

