Цю функцію розроблено в ayaka-notes/ayakaleaf-pro і модифіковано в yu-i-i/overleaf-cep. Вона доступна починаючи з v6.2.0. Функція все ще перебуває в стадії бета-тестування. Якщо у вас виникнуть проблеми, будемо вдячні за відгук.




Налаштування синхронізації з GitHub
Перейдіть до налаштувань розробника, щоб створити свій застосунок GitHub OAuth, і скопіюйтеCLIENT_ID та SECRET.
Примітки: під час створення OAuth App введіть ${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callback у полі Authorization callback URL. Ayakaleaf Pro формує ту саму адресу з OVERLEAF_SITE_URL, тож у config/variables.env для неї нічого задавати не потрібно.
Потім додайте наведені нижче налаштування до файлів змінних середовища Overleaf.
config/variables.env
GITHUB_SYNC_PROXY_URL=http://10.0.0.1:10808. Переконайтеся, що використання проксі відповідає місцевому законодавству та нормативним актам.
GitHub Enterprise
Підтримка GitHub Enterprise доступна починаючи з v6.3.1. Попередні версії підключаються лише до
github.com, і наведені нижче змінні на них не впливають.github.com. Щоб використовувати GitHub Enterprise Server (самостійно розміщений) або GitHub Enterprise Cloud із резидентністю даних (GHE.com), задайте в GITHUB_SYNC_URL вебадресу свого екземпляра — ту, за якою ви відкриваєте репозиторії в браузері.
config/variables.env
GITHUB_SYNC_URL так само, як це робить GitHub CLI:
Задавайте адреси API лише тоді, коли ваш екземпляр надає їх за іншою адресою, наприклад за API-шлюзом:
Якщо ваш екземпляр використовує сертифікат від приватного центру сертифікації (CA), змонтуйте сертифікат CA в контейнер і вкажіть шлях до нього в
NODE_EXTRA_CA_CERTS, наприклад NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/github-ca.pem.Прив’язані облікові записи та проєкти належать до екземпляра, з яким їх було прив’язано. Перш ніж перемкнути
GITHUB_SYNC_URL на інший екземпляр, попросіть користувачів скасувати прив’язку своїх облікових записів і проєктів GitHub.Хто може прив’язувати та синхронізувати
Як і в Overleaf Cloud, лише власник проєкту може прив’язати проєкт до репозиторію GitHub. Після прив’язки синхронізувати його може кожен співавтор із правом редагування.- Overleaf взаємодіє з GitHub від імені облікового запису GitHub користувача, який виконує синхронізацію, тому кожен співавтор, який синхронізує, прив’язує власний обліковий запис GitHub і повинен мати дозвіл на push у гілку за замовчуванням репозиторію.
- Співавтори з правом лише перегляду не можуть використовувати синхронізацію з GitHub для проєкту.
Q&A
Як прив'язати проєкт до GitHub і синхронізувати його?
Як прив'язати проєкт до GitHub і синхронізувати його?
Відповідь: У редакторі відкрийте Integrations і натисніть GitHub. Якщо ваш обліковий запис GitHub ще не прив’язано, спершу натисніть Link to your GitHub account. У Export Project to GitHub введіть назву репозиторію, виберіть Private у Repository visibility і натисніть Create a GitHub repository.Після цього та сама картка відкриває Sync with GitHub, де перелічено нові коміти в GitHub. Натисніть Sync, щоб закомітити свої зміни з Overleaf у гілку за замовчуванням і перенести зміни з GitHub у проєкт. Синхронізація працює в обох напрямках, але запускається лише тоді, коли хтось натискає Sync; синхронізації за розкладом немає. Якщо зміни є з обох боків, Overleaf зливає їх через тимчасову гілку з назвою
overleaf-YYYY-MM-DD-HHMMSS. Якщо під час цього злиття виникає конфлікт, злийте гілку в GitHub самостійно, а потім натисніть I have manually merged. Continue.Чи можна виконувати force push у гілку за замовчуванням?
Чи можна виконувати force push у гілку за замовчуванням?
Відповідь: Ми не рекомендуємо цього робити. Overleaf виявляє force push, попереджає про нього та підхоплює переписану гілку, зливаючи зміни, внесені в Overleaf після останньої синхронізації. Щоб уникнути несподіванок, захистіть гілку за замовчуванням від force push у налаштуваннях репозиторію.
Синхронізація з GitHub показує «Something wrong with GitHub request»
Синхронізація з GitHub показує «Something wrong with GitHub request»
Відповідь: Це повідомлення означає, що сервер не зміг зв’язатися з GitHub, наприклад через проблему з мережею, DNS, TLS або проксі. Виконайте
bin/logs web, щоб побачити повну помилку. Якщо серверу потрібен проксі для доступу до GitHub, встановіть GITHUB_SYNC_PROXY_URL.Чи слід вимкнути «Expire user access tokens» в GitHub OAuth App?
Чи слід вимкнути «Expire user access tokens» в GitHub OAuth App?
Відповідь: Так. Синхронізація з GitHub не поновлює прострочені токени. Якщо токени з терміном дії ввімкнено, користувачам доведеться знову підключати GitHub щоразу, коли їхній токен спливає.
Чи має мій екземпляр бути доступним з інтернету?
Чи має мій екземпляр бути доступним з інтернету?
Відповідь: Ні. Прив’язка облікового запису відбувається через браузер користувача, тож адреса зворотного виклику OAuth має лише відкриватися в браузері користувача. Серверу потрібно лише мати доступ до GitHub; якщо для цього потрібен проксі, встановіть
GITHUB_SYNC_PROXY_URL. GitHub ніколи не звертається до вашого екземпляра: проєкт синхронізується лише тоді, коли користувач синхронізує його в редакторі.Прив'язка мого облікового запису GitHub не вдається або повертає мене назад без прив'язки
Прив'язка мого облікового запису GitHub не вдається або повертає мене назад без прив'язки
Відповідь: Перевірте по черзі:
- Відкривайте Overleaf саме за адресою, заданою в
OVERLEAF_SITE_URL. GitHub повертає вас на${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callback, а ваш вхід існує лише на тій адресі, з якої ви почали, тож інший хост, IP-адреса чи порт приводять на сторінку входу або до повідомлення «Restricted, sorry you don’t have permission to load this page». - Authorization callback URL в OAuth App має бути
${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callback, з тією самою схемою, хостом і портом. - Сторінка помилки з
Failed to obtain access token from Git serverозначає, що GitHub не повернув токен: перевіртеGITHUB_SYNC_CLIENT_IDіGITHUB_SYNC_CLIENT_SECRET, а також те, що сервер має доступ до GitHub. Виконайтеbin/logs web, щоб побачити повну помилку.
config/variables.env виконайте bin/up, щоб перестворити контейнери.Імпорт репозиторію завершується помилкою «EmptyZipFileError: empty_zip_file» або «unzip failed»
Імпорт репозиторію завершується помилкою «EmptyZipFileError: empty_zip_file» або «unzip failed»
Відповідь: Overleaf імпортує zip-архів останнього коміту в гілці за замовчуванням репозиторію, і ця помилка означає, що в архіві немає жодного файлу, який Overleaf може імпортувати. Перевірте гілку за замовчуванням на GitHub:
- Вона містить файли проєкту, а не лише файли, які Overleaf пропускає під час імпорту: dot-файли, як-от
.gitignoreі.gitmodules(.latexmkrcзберігається), і файли збирання, як-от*.aux,*.log,*.bbl,*.synctex.gz,*.docі*.docx. - Файли містяться не лише в підмодулях Git. Архів GitHub залишає підмодулі порожніми папками.
- Очікувані файли містяться в гілці за замовчуванням, а не в іншій гілці. Імпорт завжди використовує гілку за замовчуванням.

