Versiyon
Versiyon Kontrolü
Simülasyon içerisinde yaşayan varlıklar olsaydık. Zaman akışı, hiç durmadan yeni sürümleri (commit) kaydediyor; biz ise her yeni aşamada kendi irademizle kodlarımızı gözden geçiriyor olur muyduk?. Sistem (zaman) sürekli ekleme (add), çıkarma (remove) ve kaydetme (commit) döngüsüyle yenileniyor olurdu. Düşüncelerimizin benliğimizle etkileşimi (tıpkı bir IDE gibi) de her seferinde bu kodlar yeniden derlenirdi.
Peki, bu sürümlerin gerçekten faydalı olmasını nasıl sağlayabilirdik? Böyle bir hayat olsaydı, kendimi sürekli farklı sürümler arasındaki karşılaştırmalarda (diff), değişimlerin izlerinde arıyor olmamız gerekir mi?
İşte bu neden ile bu blog yazısını ve ilerleyen yazılarımı versiyon kontrolü ile derliyor olacağım. Şimdi güneş sistemimizin gaz bulutu (nebula) zamanlarına dönerek ya da evrenin büyük patlama/genişleme dönemine mi dönsek. Ama milyarlarca yıl ileri saralım ve bugüne, kendi küçük gezegenimde açtığım bu bloga gelelim. Çünkü bu kadar ezamanda bile en büyük değişim son 30 yılda yaşandı: internet, donanım ve yazılım devrimi.
Bu blog yazımı bir statik site üreticisi olan hugo1 ve markdown dosyaları ile .html dosyaları üreterek yayınlıyorum. Markdown tıpkı bir .txt dosyası gibi düşünebiliriz. Aslında emacs içinde org-mode kullanacaktım ama kalbi o kadar büyük ki .md dosyalarını da sığdırabiliyor özgür yazılımın efsanesi.
Motivasyon
Git, Linux sistemi için güçlü bir araç. Linus tarafından ilk geliştirilmeye başlanmıştır. Linux baş yaratıcılarından olan bu arkadaşımız aynı zamanda sistemin yazılabilmesi adına bu aracı yapmışlardır. Bu neden ile ilk yazımın konusunu buna ayırmak istedim. Bende bunu yazılarımda basit bir crontab (zamanlanmış görevler) ile yöneterek yazılarıma ekliyor olacağım.
Git Nedir
Git, yazılım geliştirmede kullanılan kontrol geliştirme sistemidir. Büyük projelerde ve ekip çalışmalarında daha çok ihtiyaçları karşılaması için geliştirilmiştir.
abc
commit → “Kaydetme” olarak metafora eklenmiştir; yazılım dünyasında aslında “işleme almak” veya “ittirme” anlamına gelir. Her commit, yazdıklarımızın bir anlık kaydı gibidir.
add / remove → Ekleme ve çıkarma işlemleri. Kod veya yazı üzerinde yaptığımız değişikliklerin yönetilmesini sağlar.
diff → Farkların, yani değişimlerin izlenmesi. Önceki ve sonraki sürümler arasındaki değişiklikleri gösterir.
ide → “Derleme/çalıştırma ortamı”; kodu yazarken, test ederken ve çalıştırırken bizimle etkileşime giren araçlar.
.md → Markdown dosyası; basit bir düz metin formatı, blog yazıları için içerik oluşturmanın kolay yolu.
.org → Org-mode dosyası; Emacs için geliştirilmiş bir düz metin işaretleme sistemi, görev yönetimi ve not tutmak için idealdir.
emacs → 1976’da geliştirilmeye başlanmış, genişletilebilir ve güçlü bir metin editörü. Hem yazı yazmak hem de teknik dokümanlar oluşturmak için kullanılır.
Bonus Şarkı Çektir Git - Mavi Sakal
-
Steve Francia tarafından 2013’te Go dili ile yazılmış statik site üreticisi ↩︎