Fitur ini dikembangkan oleh ayaka-notes/ayakaleaf-pro. Fitur ini diperkenalkan di v6.3.2 sebagai pratinjau awal dan akan dirilis secara resmi di v6.4.0, sehingga konfigurasi dan perilakunya masih dapat berubah. Kami membutuhkan masukan Anda jika Anda mengalami masalah.
Menyiapkan Sinkronisasi Gitea
Buat aplikasi OAuth2 di instans Gitea Anda, melalui Settings → Applications → Manage OAuth2 applications (atau Site Administration → Integrations → Applications untuk aplikasi tingkat instans):- Application name: misalnya
Overleaf, pengguna melihatnya saat mengotorisasi aplikasi - Redirect URIs:
${OVERLEAF_SITE_URL}/user/gitea-sync/oauth2/callback - Confidential client: dicentang
config/variables.env
Gitea menampilkan scope ini saat pengguna mengotorisasi aplikasi, dan membatasi token hanya pada scope tersebut.
Token akses Gitea kedaluwarsa setelah satu jam (
[oauth2] ACCESS_TOKEN_EXPIRATION_TIME). Overleaf memperbaruinya menggunakan refresh token yang diterbitkan Gitea bersamanya, juga ketika Gitea menghabiskan refresh token setelah digunakan (INVALIDATE_REFRESH_TOKENS = true), sehingga pengguna tetap tertaut hingga mereka memutuskan tautan atau mencabut aplikasi di Gitea.
Instans Gitea Anda
AturGITEA_SYNC_URL ke alamat web instans Anda, yaitu ROOT_URL-nya, alamat yang Anda gunakan untuk membuka repositori di browser. REST API diturunkan dari alamat tersebut:
Gitea yang disajikan di bawah sub-path juga berfungsi, misalnya
GITEA_SYNC_URL=https://example.com/gitea. Atur GITEA_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/gitea-ca.pem.Akun dan proyek yang ditautkan terikat pada instans tempat mereka ditautkan. Sebelum mengganti
GITEA_SYNC_URL ke instans lain, minta pengguna untuk memutuskan tautan akun Gitea dan proyek mereka.GITEA_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 Gitea. Setelah ditautkan, setiap kolaborator dengan akses edit dapat menyinkronkannya.- Overleaf berkomunikasi dengan Gitea menggunakan akun Gitea milik pengguna yang melakukan sinkronisasi, sehingga setiap kolaborator yang menyinkronkan menautkan akun Gitea mereka sendiri, dan harus diizinkan melakukan push ke branch default repositori.
- Kolaborator dengan akses hanya-lihat tidak dapat menggunakan Sinkronisasi Gitea untuk proyek tersebut.
- Memutuskan tautan akun di Overleaf akan melupakan tokennya; Gitea tidak memiliki API untuk mencabutnya, jadi cabut juga izinnya melalui Settings → Applications di Gitea jika Anda menginginkannya.
Cara kerja sinkronisasi dengan Gitea
- Izin: pengguna harus diizinkan melakukan push ke branch default repositori yang ditautkan. Jika aturan proteksi branch tidak mengizinkan pengguna 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 Gitea, Overleaf melakukan commit perubahannya ke branch sementara bernama
overleaf-YYYY-MM-DD-HHMMSSdan menggabungkannya melalui pull request dengan gaya merge default repositori, karena Gitea tidak memiliki API untuk menggabungkan branch tanpa pull request. Setelah merge, Overleaf menghapus branch sementara; pull request yang sudah digabungkan tetap ada di repositori sebagai catatan. - Aturan merge: Overleaf tidak pernah melewati proteksi branch repositori. Jika pull request mengalami konflik, atau memerlukan persetujuan atau pemeriksaan status yang berhasil, pull request tetap terbuka dan Overleaf meminta pengguna untuk menggabungkannya di Gitea, lalu melanjutkan sinkronisasi.
- Workflow CI: Overleaf tidak menampilkan dotfile seperti
.gitea/workflows/, dan membiarkannya apa adanya di repositori. Commit dari Overleaf memicu Gitea Actions seperti commit lainnya.
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, misalnya dengan aturan proteksi branch. Overleaf dapat mengambil alih branch yang ditulis ulang, tetapi Sinkronisasi Gitea 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.
Apakah Sinkronisasi Gitea mendukung Git LFS?
Apakah Sinkronisasi Gitea mendukung Git LFS?
Jawaban: Tidak. Proyek Overleaf tidak mendukung Git Large File Storage. File yang dilacak oleh Git LFS muncul di Overleaf sebagai file pointer LFS, bukan sebagai isinya. Sebagai gantinya, lakukan commit gambar dan PDF langsung ke repositori.
Apakah fitur ini berfungsi dengan repositori SHA-256?
Apakah fitur ini berfungsi dengan repositori SHA-256?
Jawaban: Belum. Overleaf membandingkan file berdasarkan ID SHA-1-nya, sehingga pada repositori yang dibuat dengan format objek SHA-256, setiap pull menulis ulang semua file, termasuk yang tidak berubah. Tidak ada yang hilang, tetapi harap gunakan format SHA-1 default.
Apakah fitur ini berfungsi dengan Forgejo?
Apakah fitur ini berfungsi dengan Forgejo?
Jawaban: Sinkronisasi Gitea dibangun dan diuji hanya terhadap Gitea.

