takvim
| pzt | sal | çrş | prş | cum | cts | paz |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
etiket bulutu
android
apple
arch linux
arkadaşlar
asal
askerlik
atatürk
açık kaynak
bilişim
debian
django
eğitim
f klavye
firefox
gezegen
girilesi siteler
git
gündem
hayat
hp
internet
istanbul
izmir
java
kayak
komik
leopard
linux
mac os x
macbook
macbook pro
pardus
parkyeri
politika
programlama
projeler
python
raptiye
raptiye.org
siyaset
snowboard
teknoloji
tsk
türkiye
türkçe
wordpress
zeitin
özgür yazılım
ışık üniversitesi
bağlantılar
iletişim
git üstüne..

Bir süredir zeitin'de geliştirdiğimiz projelerde git denen sürüm yönetimi yazılımını deniyorduk. Aslında denemekten öte, tamamen geçiş yaptığımız da söylenebilir. Deneme sürecimiz benim için de bu aracı tanımak; bazaar'dan farklılıklarını, üstünlüklerini görmek için bahane oldu. Daha önce yazdığım "Subversion, Bazaar ve GIT üzerine.." adlı yazıda biraz önyargılı olduğumu farkettim acı bir şekilde..
git'i öğrenme süreci uzun ve oldukça zor.. zeitin'deki geliştiricilerin tamamı, her gün yaklaşık (en az) 3 saatlerini kullanma kılavuzlarını okuyarak ya da internette araştırma yaparak geçirmek zorunda kaldılar. Hala da bilmediğimiz şeyler için sık sık bakmak zorunda kalıyoruz. Bunun en büyük sebebi cvs, svn, bazaar vb. alışılageldik komutların git'te farklı karşılıklara gelebilmesi ya da tamamen farklı karşılıklarının olması ve inanılmaz fazla sayıdaki komut setleri.. Bu noktada git'in hakkını vermek gerekiyor; dökümantasyonu şahane! Sisteminize kurduğunuz andan itibaren tüm komutlara ait dökümantasyonu da yüklemiş oluyorsunuz. (bknz: git clone help) Ayrıca yenilenen sitesinde farklı kullanıcılara ve seviyelere hitap edebilecek makaleler de bulunuyor. (bknz: SVN Crash Course) Sonuç itibarıyla bu belgeleri detaylı bir şekilde okuyup denemeler yaptıktan sonra öğreniyor ve verimli bir şekilde kullanabilmeye başlıyorsunuz. Yazının devamında bazaar'dan git'e geçiş yapmış bir kullanıcı gözüyle geçişin sebeplerini anlatmaya çalışacağım.
daha hızlı ve kararlı
Çok büyük performans farkları olmamakla birlikte git'in daha hızlı olduğunu söylemek mümkün.. Örneğin Bazaar'da bzr st komutunu verdiğinizde ilk kez çalıştırdıysanız biraz beklemeniz gerekiyor. git'te bu tarz beklemeler neredeyse hiç olmuyor. Geliştirilme hızları yaklaşık olarak aynı olmasına rağmen Bazaar'da Python 2.6.x kullanıyor olmamdan dolayı geri uyumlulukla ilgili hata mesajları alıyorum ve bu hatalar epey bir zamandır (çözümü kolay olmasına rağmen) düzeltilebilmiş değil. Daha karmaşık işler yapıyorsanız (örneğin içe ya da dışarı aktarma), Bazaar'da işleminizin yarıda kalma ihtimali biraz daha yüksek.
Uzaktaki herhangi bir git deposunu indirirken görsel olarak daha başarılı bir şekilde ne kadar kaldığını görebiliyorsunuz. Ayrıca indirme işlemi genellikle daha hızlı sonuçlanıyor. Bazaar'da ise kodun ne kadarının indiğini anlamak her zaman mümkün olmuyor.
entegrasyonu daha güçlü
git beraberinde kullanabileceğiniz küçük, büyük bir sürü araçla geliyor ve bu araçlar son derece sorunsuz kullanılabiliyor. (gitk, gitweb, aktarma araçları vb.) SVN entegrasyonuna ihtiyacınız varsa hiç sorun yaşamayacağınızdan emin olabilirsiniz; zira git paketine dahil olan araçlar arasında yer alıyor. Şirketten bir arkadaşımın dışardaki bir svn deposundan aldığı kodu kendi bilgisayarında git ile yönetip tekrar uzaktaki svn deposuna teslimat yaptığını başarılı bir örnek olarak sayabilirim mesela.
Yaptığınız değişiklikleri e-posta listesi'ne göndermek istediğinizde kısa bir komutla yamanıza yorumlar da yaparak e-posta atabilirsiniz. Karşı tarafın gelen e-posta'daki kod değişikliklerini direk olarak uygulayabilmesi için git'te komut var!
Kancalar sayesinde bir çok olaydan önce belli işlerin yapılmasını sağlayabiliyorsunuz. Örneğin her teslimattan sonra belli bir yere e-posta atılması vb. rutin işleri yaptırabiliyorsunuz. Bu da herhangi bir deposu oluşturduğunuzda öntanımlı olarak kullanabileceğiniz özellikler arasında!
Kod tabanınızın kopyasını tar.gz, tar.bz2 vb. sıkıştırılmış biçimlerde direk olarak dışa aktarma imkanınız var.
Yaptığınız tüm değişiklikleri, etiketleri, paketleri GPG entegrasyonu ile imzalayabiliyorsunuz.
görsel araçlar
Bazaar'daki en kronik sorunlardan biri görsel araçların sayıca azlığı bence... Son derece karmaşık olan launchpad'in kullanılmasına karşılık, git tarafında github, gitweb, unfuddle vb. pek çok araç ya da site bulmak mümkün. Değişikliklerinizi, dallarınızı, tarihçeyi çok rahat bir şekilde görmenizi sağlayan gitk adında bir araç var ve bu da git paketine dahil!
Herhangi bir git dizinini ağ üzerinden sunduğunuzda başka hiç bir şey yapmadan indirilebilmesini sağlayabiliyorsunuz. (git clone http://code.raptiye.org/raptiye.git)
silinmiş değişiklikler
twitter takipçileri muhtemelen okumuşlardır; geçtiğimiz hafta şirkette kullandığımız ana git deposunu patlattım kendi uzak dalımı açarken... :) Arada durumu daha da kötüye götürüp teslim etmediğim bir takım değişiklikleri de sildim. Normalde sildiğiniz değişiklikleri (git reset --hard HEAD) geri getirme şansınız hiç bir sürüm yönetim yazılımında yokken git reflog komutu resmen hayat kurtarıyor, istediğiniz değişikliklerin tamamına geri sarabiliyorsunuz; hatta silinmiş olsalar bile!
değişiklikleri kenara koymak
Diyelim ki kodda bir takım değişiklikler yaptınız ve henüz teslim etmeye hazır değilsiniz. (yerel teslimatlar yapabiliyorken neden hazır olmayasınız o da ayrı bir mevzu...) Arkadaşınız kodun son halini indirmenizi ya da kendi deposundaki değişiklikleri indirip denemenizi istedi. git stash komutu ile yaptığınız tüm değişiklikleri bir yığın (stack) içerisinde saklayabilir, işiniz bitince yığındaki değişiklikleri istediğiniz gibi geri koyabilirsiniz.
uzaktaki değişikliklere gözatmak
Dağıtık yapıyı tercih ediyorsanız zaman zaman başkalarının depolarından (ki bu ana depo bile olabilir) kod almanız gerekebilir. git'te alacağınız kodu, teslim etmediğiniz kodlara zarar vermeyecek şekilde alabilir (git fetch), inceleyebilir ve yapılanlar arasındaki farkı görüntüleyebilirsiniz (git diff HEAD..FETCH_HEAD). Eğer kayda değer bir şeyler varsa git pull ya da git merge ile değişiklikleri temelli olarak alabilirsiniz.
1.0.4 sürümünü çıktığım raptiye'nin kod tabanını artık git üzerinde tutuyorum. Kodları indirmek istiyorsanız;
git clone http://code.raptiye.org/raptiye.git
komutunu kullanabilirsiniz. Görsel olarak değişiklikler arasında dolaşabilmek içinse http://git.raptiye.org adresine gözatabilirsiniz. Yine gitweb arayüzünden snapshot bağlantıları sayesinde paket halinde raptiye'yi indirebilirsiniz.
Bu arada 1.0.4 sürümüyle birlikte raptiye'de şu değişiklikleri/düzeltmeleri görmek mümkün:
- google adsense reklamları
- yorum adreslerinde http:// yazılmadığında çıkan hatalar
- yayınlanmamış yazıların twitter'a gönderilmesi
- sağdaki dikey kolona flickr göstergesi (flickr pro hesabı satın aldım bu arada)
- giriş sayfasında sunucu hatasına sebep olan hata
- anonim yorumlarda giriş ya da kayıt olma bağlantıları

rss takibi


