Bu özellik ayaka-notes/ayakaleaf-pro tarafından geliştirilmiştir. v6.4.0 ve sonrasında sunulmuştur. Hâlâ beta aşamasındadır. Herhangi bir sorun yaşarsanız geri bildiriminize ihtiyacımız var.
GitLab Senkronizasyonunu Kurma
GitLab örneğinizde User settings → Applications altında (örnek genelinde bir uygulama için Admin area → Applications altında) bir OAuth uygulaması oluşturun:- Redirect URI:
${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback - Confidential: işaretli
- Scopes:
api
config/variables.env
Kendi yönettiğiniz GitLab
GITLAB_SYNC_URL değerini örneğinizin web adresine, yani projeleri tarayıcıda açtığınız adrese ayarlayın. REST API adresi bundan türetilir:
GITLAB_SYNC_API_URL değerini yalnızca örneğiniz API’yi başka bir yerde sunuyorsa (örneğin bir API ağ geçidinin arkasında) ayarlayın.
Örneğiniz özel bir CA’dan alınmış bir sertifika kullanıyorsa, CA sertifikasını konteynere bağlayın ve
NODE_EXTRA_CA_CERTS değişkenini bu dosyayı gösterecek şekilde ayarlayın, ör. NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/gitlab-ca.pem.Bağlanan hesaplar ve projeler, bağlandıkları örneğe aittir.
GITLAB_SYNC_URL değerini başka bir örneğe geçirmeden önce kullanıcılardan GitLab hesaplarının ve projelerinin bağlantısını kaldırmalarını isteyin.GITLAB_SYNC_PROXY_URL=http://10.0.0.1:10808. Bu, standart bir HTTP/HTTPS ileri proxy’si olmalı ve 127.0.0.1 kullanmamalıdır.
Kimler bağlayabilir ve senkronize edebilir
Overleaf Cloud’da olduğu gibi, bir projeyi bir GitLab deposuna yalnızca proje sahibi bağlayabilir. Bağlandıktan sonra, düzenleme erişimine sahip her ortak çalışan projeyi senkronize edebilir.- Overleaf, GitLab ile senkronizasyonu yapan kullanıcının GitLab hesabı üzerinden iletişim kurar; bu nedenle senkronizasyon yapan her ortak çalışan kendi GitLab hesabını bağlar ve deponun varsayılan dalına gönderme (push) izni olması gerekir.
- Yalnızca görüntüleme erişimine sahip ortak çalışanlar, proje için GitLab Senkronizasyonunu kullanamaz.
GitLab ile senkronizasyon nasıl çalışır
- İzinler: kullanıcıların bağlı projenin varsayılan dalına gönderme izni olmalıdır. Varsayılan dal korumalıysa ve kullanıcı bu dala gönderme yapamıyorsa, Overleaf erişimini kaybettikleri bir depoda olduğu gibi kullanıcıdan proje sahibiyle iletişime geçmesini ister.
- Birleştirme: bir proje hem Overleaf’te hem de GitLab’da değiştiğinde, Overleaf değişikliklerini
overleaf-YYYY-MM-DD-HHMMSSadlı geçici bir dala işler ve bunu bir merge request aracılığıyla birleştirir; çünkü GitLab’da merge request olmadan dalları birleştirmeye yarayan bir API yoktur. Birleştirmeden sonra Overleaf geçici dalı ve merge request’i siler. GitLab’da merge request’leri yalnızca yöneticiler ve proje sahipleri silebilir; bu nedenle diğer kullanıcılar için birleştirilmiş merge request projede kalır. - Birleştirme kuralları: Overleaf, projenin birleştirme kurallarını asla atlamaz. Merge request’te bir çakışma olduğunda veya bir onay ya da başarılı bir pipeline gerektiğinde, merge request açık kalır ve Overleaf kullanıcıdan bunu GitLab’da birleştirmesini, ardından senkronizasyona devam etmesini ister.
- Pipeline’lar: Overleaf’ten gelen commit’ler, diğer tüm commit’ler gibi pipeline’ları başlatır. Projeniz merge request’ler için pipeline çalıştırıyor ve bunların başarılı olmasını gerektiriyorsa, Overleaf’ten gelen birleştirmeler yukarıda açıklandığı gibi bunları bekler.
Q&A
Varsayılan dala zorla gönderme (force push) yapabilir miyim?
Varsayılan dala zorla gönderme (force push) yapabilir miyim?
Yanıt: Lütfen varsayılan dala zorla gönderimleri devre dışı bırakılmış olarak tutun. Bu, GitLab’ın varsayılan davranışıdır: yeni bir projenin varsayılan dalı korumalıdır ve kimse bu dala zorla gönderme yapamaz. Overleaf yeniden yazılmış bir dalı devralabilir, ancak GitLab Senkronizasyonu geçmişi yalnızca büyüyen bir varsayılan dal için tasarlanmıştır.
Bağlı bir projenin varsayılan dalını yeniden adlandırabilir miyim?
Bağlı bir projenin varsayılan dalını yeniden adlandırabilir miyim?
Yanıt: Hayır. Overleaf, projenin bağlandığı dalla senkronize olmaya devam eder; bu nedenle o dal yeniden adlandırıldığında veya kaldırıldığında senkronizasyonlar başarısız olur. Başka bir dalla senkronize etmek için projenin bağlantısını kaldırın, ardından depoyu yeni bir projeye içe aktarın; yeni proje mevcut varsayılan dalı kullanır.

