GitRoot
(gitroot.dev)- GitRoot, tek bir ikili dosyayla depoları ve erişim izinlerini yöneten; issue, pano, branch birleştirme ve web arayüzünü bağımsız eklentiler olarak birleştiren küçük bir Git forge'udur
- Yalnızca kodu değil, issue'leri, merge request'leri ve panoları da kapsayacak şekilde tüm verileri Git içinde normal dosyalar olarak saklar; ayrı bir veritabanına veya gizli blob'lara dayanmaz
.gitroot/users.ymlve branch bazlı yazma izinleri ile değişiklikleri kontrol eder; deponun mevcut durumunu temsil eden varsayılan branch'e yalnızca izinli kullanıcılarpushyapabilir- Şu anda alfa sürümünde; depo, kullanıcı, eklenti, SSH Git komutları ve HTTP üzerinden görüntülemeyi destekliyor, ancak üretim kullanımı için uygun değil
- 1.0 öncesinde güncellemeler, dosya düzeyinde izinler, HTTP Git komutları, gruplar ve alt gruplar ile eklenti API'sinin kararlı hale getirilmesi planlanıyor; şu an katkı vermek için Git ve
graftereklentisinin akışını anlamak gerekiyor
Yalnızca gerekli özellikleri birleştiren küçük bir Git forge
- GitRoot, tek bir ikili dosyayla çalışan küçük bir Git forge olup temel işlevlerini depo oluşturma ve depo bazlı erişim izni yönetimiyle sınırlar
- Geri kalan işlevler, birbirinden bağımsız olarak kurulabilen eklentiler tarafından sağlanır
- Issue, roadmap, sprint ve milestone oluşturma
- Öğeleri pano biçiminde gösterme
- GitRoot'un
graftdediği branch inceleme ve birleştirme - Depo verilerini ve çeşitli işlevleri web arayüzü üzerinden sunma
- Eklentiler tamamen ayrık olduğu için web arayüzü olmadan yalnızca pano kullanılabilir; ayrıca proje için gereken işlevler doğrudan eklenti olarak geliştirilebilir
Projeye göre forge'u değiştirmeye yönelik tasarım
- Her projenin ihtiyaç duyduğu çalışma biçiminin farklı olduğu varsayımıyla, her projenin kendi forge'unu değiştirme özgürlüğüne sahip olması için tasarlanmıştır
- Geliştiricinin istediği ortam şudur
- Kodu, issue'leri, pull/merge request'leri ve panoları tek bir depoda saklamak
- Açılış sayfası, çeviri, bilet sistemi, forum gibi projenin tanıtımı ve işletimi için gerekli işlevleri sağlamak
- Migration script'leri olmadan ve veri ya da katkıda bulunan bilgisi kaybı yaşamadan başka bir sunucu forge'una taşınabilmek
- Buna karşılık aşağıdaki karmaşıklıklardan kaçınmayı hedefler
- Pull/merge request veya issue yönetmek için tarayıcı açmayı zorunlu kılan yaklaşım
- Projeyle ilk kez karşılaşan kişilere önce dosya ve dizin listesini gösteren yapı
- Forge'un sprint, milestone, epic ve user story'nin anlamını ve iş akışını belirlemesi
- Tek bir kullanıcı iznini ayarlamak için birden çok menüden geçmeyi gerektiren yapı
Kurulum ve işletimde özerklik
- Yöneticilerin kolayca kurup bakım yapabilmesi için bağımlılığı ve veritabanı olmayan bir dağıtım hedeflenir
- Yönetici, kullanıcı bazında izin verilen işlemleri ayarlayabilmeli; kullanıcılar ise e-posta veya sohbet olmadan proje ve özellik oluşturma/erişim taleplerini kendileri yapabilmelidir
- Amaç, yükseltme yükünü azaltırken proje ve kullanıcı verilerini üçüncü taraflara vermemek ve işletim politikasını aniden değiştirebilecek büyük sağlayıcılara bağımlı olmamaktır
- Henüz tamamlanmamış bir proje olarak dış katkı kabul etmektedir
Normal dosyalar ve branch'lerle yönetilen izinler
- Veritabanı veya Git ağacının içindeki gizli blob'lar yerine, kodun yanında bulunan normal dosyalarda tüm verileri saklar
- Her deponun
.gitroot/users.ymldosyası, kullanıcı bazında yazılabilecek konumları belirtir; erişim denetimi esas olarak branch kısıtlamaları etrafında çalışır- Başlangıçta yalnızca sahip, varsayılan branch'e erişebilir
- Yetkisi olmayan bir kullanıcı varsayılan branch'e
pushyaparsa GitRoot değişikliği reddeder - Herkes yeni bir branch oluşturabilir ve branch'i oluşturan kullanıcı o branch için yazma izni alır; diğer kullanıcılar ise değiştiremez
.gitroot/users.ymldosyası değiştirilir ya da kullanıcının kendisini eklediği branch birleştirilirse, ilgili kullanıcı da varsayılan branch'epushyapabilir
- Herkes dosyaları okuyabilir ve bunları yerelde ya da yeni bir branch'te değiştirebilir; ancak deponun mevcut durumunu temsil eden varsayılan branch'e değişiklik yansıtmak için sahibin birleştirmesi gerekir
- Forge'un kendi ayarları da kök depoda yönetilir
- Kök deponun varsayılan branch'indeki
.gitroot/repositories.ymldosyasına değişiklik eklenirse veya bu değişiklik birleştirilirse depo oluşturulur - Ayrıntılı çalışma biçimi için belgelere bakılabilir
- Kök deponun varsayılan branch'indeki
Alfa sürümünde desteklenen özellikler
- Şu anda alfa sürümünde olduğu için denenebilir, ancak üretimde kullanılmamalıdır
- Destek kapsamı şöyledir
- Depo oluşturma ve silme
- SSH üzerinden Git komutlarını işleme
- Depo ve branch düzeyinde kullanıcı bazlı yazma konumu yönetimi
- Eklenti kurma ve depo bazında etkinleştirme
- Kurulum sırasında çalışma ağacında eklenti çalıştırma
- Kurulumdan sonra her commit'te diff üzerinde eklenti çalıştırma
- HTTP üzerinden depo görüntüleme
1.0'a kadar geliştirme planı
- 1.0 sürümünden önce aşağıdaki işlevlerin uygulanması planlanıyor
- GitRoot ve eklenti güncellemeleri
- Dosya düzeyinde kullanıcı izinleri yönetimi
- HTTP üzerinden Git komutlarını işleme
- Gruplar ve alt gruplar kullanarak depo yönetimi
- Eklenti API'sini kararlı hale getirme
Self-hosting ve katkı süreci
- GitRoot web sitesi, GitRoot kodunun kendisini barındıran bir GitRoot instance'ıdır ve yalnızca GitRoot projesi için işletilir
- Başka projelerde denemek için kurulum ve kullanım belgeleri izlenmelidir
- GitRoot'un kendisi de bir GitRoot deposu olduğundan aynı şekilde katkı verilebilir; süreç katkı rehberinde açıklanmıştır
- Mevcut instance, kodun bir kısmını varsayılan branch'e entegre eden
graftereklentisini kullandığı için katkı vermeden önce bunun nasıl çalıştığını anlamak gerekir - Kod, issue, çeviri dahil tüm veriler Git'te saklandığından, şu anda katkı vermek için Git kullanımını bilmek gerekir
- Gelecekte herkesin tarayıcıda doğrudan
git commitvegit pushçalıştırarak katılabilmesi hedeflenmektedir
1 yorum
Lobste.rs görüşleri
<pre>etiketinin genişliğinin 720px ile sınırlanmasının nedenibodyiçindekidisplay:gridgibi görünüyor; bunu kaldırınca beklendiği gibi genişliyor. Ayrıca URL’de belirli bir commit anına ait bilgi olmadığı için bağlantıyı gönderenle alan kişinin aynı ekranı görmesi zor oluyor. Bunun kişisel ihtiyaçlar için bir proje olduğunu anlıyorum; sadece değerlendirilebilecek bir nokta olarak iletmek istedimKişisel olarak kodlamada LLM kullanmıyorum ve buna karşıyım, ama LLM kullanılmış olsa bile yama yeterince küçükse reddedip reddetmeyeceğimden emin değilim
İngilizce ana dilim olmadığı için GitRoot’u anlatmakta zorlanıyorum; bu yüzden dış iletişimde LLM izleri var. Daha önce de https://gts.gitroot.dev/@forge/statuses/01KFNWDKSZBEHTC16N5G02HJZ6 ve https://gts.gitroot.dev/@forge/statuses/01KTP30NTY9FK91Q9B5Z9B4M52 adreslerinde yardım istedim ama kimse gelmedi
LLM kullanmak zorunda olmak canımı yakıyor, ama hiçbir şey yapmamaktansa asgari düzeyde kullanmaya karar verdim. İleride bir topluluk oluşursa tamamen dışlamak istiyorum; ondan önce de ekonomik nedenlerle doğal olarak ortadan kaybolabileceğini düşünüyorum. Felsefe, güvenlik ve gelecek hakkında yazmam gereken pek çok metin yapılacaklar listemde var, ama sonuçta LLM cümleleri düzeltecek, yazım hatalarını giderecek ve çeviri yapacak diye düşündüğüm için yazmaya başlamakta tereddüt ediyorum