Fitur ini dikembangkan oleh ayaka-notes/ayakaleaf-pro. Fitur ini diperkenalkan sejak v6.4.0 dan versi selanjutnya, dan masih berstatus beta. Kami membutuhkan masukan Anda jika Anda mengalami masalah.
Menyiapkan Sinkronisasi GitLab
Buat aplikasi OAuth di instans GitLab Anda, melalui User settings → Applications (atau Admin area → Applications untuk aplikasi tingkat instans):- Redirect URI:
${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback - Confidential: dicentang
- Scopes:
api
config/variables.env
GitLab self-managed
AturGITLAB_SYNC_URL ke alamat web instans Anda, yaitu alamat yang Anda gunakan untuk membuka proyek di browser. REST API diturunkan dari alamat tersebut:
Atur
GITLAB_SYNC_API_URL hanya jika instans Anda menyajikan API di tempat lain, misalnya di belakang API gateway.
Jika instans Anda menggunakan sertifikat dari CA privat, mount sertifikat CA tersebut ke dalam kontainer dan arahkan
NODE_EXTRA_CA_CERTS ke sertifikat itu, misalnya NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/gitlab-ca.pem.Akun dan proyek yang ditautkan terikat pada instans tempat mereka ditautkan. Sebelum mengganti
GITLAB_SYNC_URL ke instans lain, minta pengguna untuk memutuskan tautan akun GitLab dan proyek mereka.GITLAB_SYNC_PROXY_URL=http://10.0.0.1:10808. Proxy tersebut harus berupa forward proxy HTTP/HTTPS standar, dan tidak boleh menggunakan 127.0.0.1.
Siapa yang dapat menautkan dan menyinkronkan
Seperti di Overleaf Cloud, hanya pemilik proyek yang dapat menautkan proyek ke repositori GitLab. Setelah ditautkan, setiap kolaborator dengan akses edit dapat menyinkronkannya.- Overleaf berkomunikasi dengan GitLab menggunakan akun GitLab milik pengguna yang melakukan sinkronisasi, sehingga setiap kolaborator yang menyinkronkan menautkan akun GitLab mereka sendiri, dan harus diizinkan melakukan push ke branch default repositori.
- Kolaborator dengan akses hanya-lihat tidak dapat menggunakan Sinkronisasi GitLab untuk proyek tersebut.
Cara kerja sinkronisasi dengan GitLab
- Izin: pengguna harus diizinkan melakukan push ke branch default proyek yang ditautkan. Jika branch default dilindungi dan pengguna tidak boleh melakukan push ke sana, Overleaf meminta mereka menghubungi pemilik proyek, sama seperti pada repositori yang aksesnya telah hilang.
- Merge: jika proyek berubah baik di Overleaf maupun di GitLab, Overleaf melakukan commit perubahannya ke branch sementara bernama
overleaf-YYYY-MM-DD-HHMMSSdan menggabungkannya melalui merge request, karena GitLab tidak memiliki API untuk menggabungkan branch tanpa merge request. Setelah merge, Overleaf menghapus branch sementara dan merge request tersebut. Hanya administrator dan pemilik proyek yang boleh menghapus merge request di GitLab, sehingga bagi pengguna lain merge request yang sudah digabungkan tetap ada di proyek. - Aturan merge: Overleaf tidak pernah melewati aturan merge proyek. Jika merge request mengalami konflik, atau memerlukan persetujuan atau pipeline yang berhasil, merge request tetap terbuka dan Overleaf meminta pengguna untuk menggabungkannya di GitLab, lalu melanjutkan sinkronisasi.
- Pipeline: commit dari Overleaf memicu pipeline seperti commit lainnya. Jika proyek Anda menjalankan pipeline untuk merge request dan mewajibkannya berhasil, merge dari Overleaf akan menunggu pipeline tersebut, seperti dijelaskan di atas.
Q&A
Bisakah saya melakukan force push ke branch default?
Bisakah saya melakukan force push ke branch default?
Jawaban: Harap biarkan force push ke branch default tetap dinonaktifkan. Ini adalah pengaturan default GitLab: branch default dari proyek baru dilindungi dan tidak ada yang dapat melakukan force push ke sana. Overleaf dapat mengambil alih branch yang ditulis ulang, tetapi Sinkronisasi GitLab dirancang untuk branch default yang riwayatnya hanya bertambah.
Bisakah saya mengganti nama branch default dari proyek yang ditautkan?
Bisakah saya mengganti nama branch default dari proyek yang ditautkan?
Jawaban: Tidak. Overleaf terus melakukan sinkronisasi dengan branch tempat proyek ditautkan, sehingga sinkronisasi akan gagal setelah branch tersebut diganti namanya atau dihapus. Untuk menyinkronkan dengan branch lain, putuskan tautan proyek, lalu impor repositori ke proyek baru, yang akan menggunakan branch default saat ini.

