Git-Tabanlı İçerik Yönetimi

İçerikleri veritabanında değil Git'te saklamak ne anlama gelir ve bu neden ajanslar için doğru seçimdir.

Git commit geçmişi — içerik değişiklikleri

AstroForge'da tüm içerikler JSON dosyalarında saklanır ve GitHub'da versiyonlanır. Bu, çoğu CMS'in benimsediği veritabanı yaklaşımından temel bir ayrışmadır.

Veritabanı vs Git: Fark Ne?

Veritabanı tabanlı CMS'lerde içerik anlık veri olarak saklanır. Dün ne vardı, iki hafta önce başlık ne diyordu — bu soruların cevabını bulmak zordur. Yanlış bir silme işlemi genellikle geri döndürülemez.

Git'te ise her değişiklik bir commit'tir. Tarih sonsuza kadar saklanır. Yanlış bir değişiklik: git revert ile tek komutla geri alınır. Kim ne zaman ne değiştirdi: git blame ile saniyeler içinde görülür.

AstroForge'da Pratik

CMS üzerinden yapılan her kaydetme işlemi, astrocms Worker tarafından doğrudan GitHub'a commit edilir. Commit mesajı hangi sayfanın hangi bölümünün değiştirildiğini belirtir. Bu sayede:

  • Müşterinin yaptığı değişiklikler izlenebilir
  • Hatalı içerik yayınlanmışsa geri alınabilir
  • İki geliştirici aynı içeriği değiştirirse conflict ortaya çıkar ve çözülebilir

Seed ile Varsayılan İçerik

npm run seed komutu, tüm sayfalar için JSON iskeletlerini oluşturur. Mevcut içerikler korunur, sadece eksik key'ler eklenir. Bu sayede yeni bir organism eklendiğinde tüm sayfa JSON'larına yeni key'ler merge edilebilir.

Sınırlılıklar

Git-tabanlı içerik yönetiminin bir dezavantajı vardır: çok yüksek frekanslı içerik güncellemelerinde (dakikada onlarca commit) GitHub API rate limit'e çarpabilir. Bu senaryo için CMS yazmaları arasında batch sistemi veya geçici KV cache kullanılabilir.