Uzun zamandır SVN‘den Git‘e geçiş yapmak istiyordum. Bugün biraz kurcalamak için vaktim oldu. Bu yazıda Windows üzerinde bir Git Repository’si nasıl kullanılır ve Internet üzerinden diğer arkadaşlarınızla aynı repository’i nasıl paylaşabilirsiniz bunu anlatmaya çalışacağım. Ben online kısmını çözene kadar 2-3 saat bir süre geçtiği için yazma ihtiyacı hissettim.
Öncelikle konuya yabancı olanlar için küçük bir açıklama; Repository kullanmak; temel olarak çalışma dosyalarınız üzerinde versiyonlama yapmanıza yarar. Bu özellik yazılımcılar açısından çok çok büyük bir önem taşımaktadır. Çünki bu sayede yazılım kodu içerisinde istediğiniz bir saate/güne geri dönebilirsiniz. Bu özelliğin internet/network üzerinden kullanılması ise birden fazla kişinin aynı proje üzerinde çalıştığı ortamlar için yine büyük yararlar sağlamaktadır. Kodlarınızı takım arkadaşlarınız ile paylaşabilir ve herhangi bir hata/bug halinde hatalı kısmı bulma/düzeltme işlemini kolaylıkla yapabilirsiniz.
Bu tür -özellikle- açık kaynak kodlu projeler genellikle unix tabanlı sistemler üzerinde geliştirildiği için subversion uygulamaları da yine unix bazlı sistemler üzerinde yaygın. Fakat Windows kullanıcıları da unutulmamış tabi. Ben uzunca bir süredir SVN için TortoiseSVN’i kullanıyordum. Git için de yine TortoiseGit kullanmaya karar verdim.
Bilgisayarımıza Gerekli Programların Kurulumu
Git kurabilmek için öncelikle bu linkten TortoiseGit ve bu linkten MsysGit programlarını indirip bilgisayarınıza kurmanız gerekiyor.
Tortoise Git ve MsysGit Download Ekranları (işletim sisteminize göre uygun versiyonu indirebilirsiniz. TortoiseGit x64 destekliyor.)
Unfuddle Hesabı Açmak
Kurulum yapılıp bilgisayarımızı restart ettikten sonra sıra unfuddle.com üzerinden kendimize bir hesap açmaya geliyor. Hesap açma sırasında çeşitli paketler mevcut. Denemek için ücretsiz paketi kullanabilirsiniz. 200MB disk alanı ve iki kullanıcı ile limitli oluyorsunuz.
Unfuddle paket seçimi ve hesap oluşturma ekranları
Unfuddle hesabımızı başarıyla açtıktan sonra Dashboard ekranı karşımıza geliyor.
Unfuddle Dashboard Ekranı
Unfuddle hesabınız açıldığı anda otomatik olarak yeni bir proje açılıyor. Bu projenin ismini istediğiniz gibi değiştirebilirsiniz.
Şimdi sıra online repository oluşturmaya geldi. Unfuddle üzerinde “Repositories” menüsü üzerinden kendimize yeni bir repository oluşturuyoruz.
Unfuddle Repository oluşturma menüleri
Repository oluştururken “Abbreviation” seçeneği repository’nizin url’de görünecek değeridir. Type olarak ta “Git” seçmemiz gerekiyor. Repository’i oluşturduktan sonra ikinci ekran görüntüsünde de göreceğiniz gibi unfuddle bize bir url adresi oluşturuyor.
Bilgisayarımızda Çalışma Alanı Oluşturmak
Diskimiz üzerinde yeni bir klasör oluşturuyoruz. Bu klasör içerisinde aynı zamanda Git’in lokal repository’si de yer alacak. Git sisteminde hem lokal hem de internet üzerinde iki repository kullanılıyor. Klasörümüzü oluşturduktan sonra üzerinde sağ tıklayarak çıkan menüden “Git Create repository here” seçerek bu klasör içerisinde Git repository’sini oluşturuyoruz.
Lokal disk üzerinde repository oluşturmak
Private Public RSA Key Oluşturmak
Git unfuddle’daki online repository ile konuşurken bir RSA anahtar çiftine (private/public key pair) ihtiyaç duyuyor. Böylece internet üzerinden giden bilgiler de şifrelenmiş oluyor. Bu anahtar çiftini oluşturabilmek için bilgisayarımıza kurmuş olduğumu Git tool’larını kullanıyoruz. Anahtar çiftini saklıyacağımız klasör üzerinde sağ tıklayarak çıkan menüden “Git bash here” seçiyoruz ve Git’in shell ekranı açılıyor.
Git Bash penceresi açmak ve ssh key üretmek
Git komut ekranından aşağıdaki komut yardımıyla anahtarımızı oluşturuyoruz. Yukarıdaki ekran görüntüsünden seçenekleri görebilirsiniz.
ssh-keygen -t rsa
örneğimizde dosya ismi olarak “git-test” kullandık. Bu işlemi yaptığımı klasör içerisinde “git-test” ve “git-test.pub” isminde iki dosya oluştu. Key üretilirken aynı zamanda size şifre de soruluyor. Eğer burada bir şifre tanımlarsanız her comit işleminde bu şifreyi girmeniz gerekir. Kaynak kodlarınız üzerinde ciddi bir güvenlik kontrolü istiyorsanız burada şifre vermenizi tavsiye ederiz.
Sıra puttygen ile private key oluşturmaya geldi. Ben kurulum esnasında TortoiseGit için ssh client olarak putty seçmiştim. (Aradaki farkı bildiğimden değil, sırf “önerildi” diye). Bu yüzden online repository ile transfer yapılırken putty private key’ine ihtiyacımız olacak. Bu key’i üretmek için de TortoiseGit araçları içinden “Putty Key Generator” isimli programı kullanacağız. Programa başlat menüsünde “TortoiseGit” içinden ulaşabilirsiniz.
Programı çalıştırdıktan sonra “Load” butonuna basarak biraz önce ürettiğimiz “git-test” isimli private key dosyasını seçiyoruz. Eğer şifreli olarak ürettiysek dosyayı açarken şifreyi soracaktır. Key yüklendikten sonra “Save private key” butonu ile “git-test.ppk” ismiyle aynı klasöre kaydediyoruz. Bu aşamada Putty Key Generator ile başka bir işlem yapmamıza gerek yok. Programı kapatabiliriz.
Putty Key Generator yükleme ve kayıt işlemleri
Anahtar çiftlerimiz de hazır olduğuna göre şimdi sıra online repository’yi lokal repository ile konuşturmakta. Bunun için lokal çalışma klasörümüz üzerinde sağ tıklayarak “TortoiseGit” menüsünden “Settings”e geliyoruz. Açılan pencerede “Git / Remote” bölümüne gelerek “Add New” butonuna basıyoruz.
- Remote kısmına online repository için bir tanımlama yapıyoruz. Örneğimizde “unfuddle-ghostrider” kullandık
- Url kısmına unfuddle üzerinde biraz önce oluşturduğumuz online repository’nin url adresini yazıyoruz. örneğimizde “git@ghostrider.unfuddle.com:ghostrider/gitdoc.git” kullanıldı
- Putty Key kısmına ise “Putty Key Generator” ile oluşturduğumuz “private key” dosyamızı tam dosya yolu ile yazıyoruz.
Git Remote Settings seçenekleri
“OK” seçerek değişiklikleri kaydediyoruz. Bu işlemin ardından lokal repository’miz için upstream server ayarını yapmamız gerekiyor. Daha önce açmış olduğumuz Git Bash Shell komut ekranına geliyoruz ve aşağıdaki satırı yazıyoruz.
git config remote.unfuddle-ghostrider.push refs/heads/master:refs/heads/master
bu komuttaki kırmızı ile işaretlenmiş satır Git Remote Settings sayfasında Remote için tanımladığımız değer olmalı.
Upstream Srever tanımlaması
Sıra unfuddle üzerinde public key’imizi tanımlamaya geldi. unfuddle’daki sayfamızı açıyoruz ve sağ üstteki “Personal Settings” sayfasına giderek en alttan “New Public Key” linkine tıklıyoruz. Açılan menüye anahtarımız için bir isim verip alttaki Value kısmına biraz önce oluşturduğumuz “git-test.pub” dosyasında bulunan (notepad ile açabilirsiniz) public key satırını yapıştırıyoruz.
Public Key’i unfuddle’a tanımlamak
İlk Commit
Sonunda bu karışık tanımlama işleri bitti. Artık çalışmaya başlayabiliriz. 🙂
Çalışma klasörümüz içerisinde projemiz ile ilgili dosyaları kopyalıyoruz. Projenize dahil olan dosyaları istediğiniz klasör yapısı ile içeri alabilirsiniz. Dosyaları kopyaladıktan sonra ilk yapmamız gereken işlem lokal repository’mize comit etmek. Bunun için klasöre sağ tıklayıp açılan menüden “Git Commit -> master” seçiyoruz.
Lokal Repository’e comit etmek
Açılan pencerede üzerinde değişiklik yapılan/eklenen/silinen dosyalar listeleniyor. Burada istediğimiz dosyaları seçerek repository’e gönderilmelerini sağlamış oluyoruz. Dikkat etmemiz gereken nokta her comit işlemi sırasında mutlaka bir not yazma zorunluluğu. SVN’de iken tembellikten dolayı yazmadan geçebiliyorduk. Burada zorunlu tutulmasına bu yüzden çok sevindim. Tabii isterseniz “Sign” butonu ile imzanızı da atabiliyorsunuz.
Lokal Comit Ekranı
Bu şekilde istediğiniz her periyotta çalışmalarımızı lokal repository’ye comit ediyoruz. Böylece her comit ettiğimizde çalışmamızın o anki hali versiyonlanmış oluyor.
Online Repository İle Senkronizasyon
Artık çalışmalarımızı online repository’mize gönderebiliriz. Böylece takım arkadaşlarımız da projenin son güncellenmiş halini kendi repository’lerine alabilirler. Bunu yapmak için çalışma klasörümüz üzerinde sağ tuşa basarak açılan menüden “Git Sync..” seçiyoruz. “Remote Url” kısmına biraz önce tanımladığımız Remote değerini gireceğiz. Örneğimizde unfuddle-ghostrider idi. “AutoLoad Putty Key” seçeneğini aktif hale getiriyoruz ve
“Push” butonu ile lokal ve remote repository’nin senkronize olmasını sağlıyoruz. Adından da anlaşıldığı gibi “Push” lokali online’a gönderiyor. Aynı şekilde “Pull” ise online’daki değişiklikleri lokale almamızı sağlıyor.
Git Sync – Push işlemi
İlk Kontrol
Bütün herşey bittikten sonra uunfuddle üzerinde repository’mize tıkladığımız zaman dosyalarımızı görmemiz gerekiyor. Zaten başarısız bir push işleminde hata mesajları ile karşılaşıyoruz. unfuddle üzerinde tanımladığımız alt kullanıcıların mutlaka repository üzerinde gerekli izinlerinin olmasına dikkat etmemiz gerekiyor. Aksi takdirde comit işlemleri başarısızlıkla sonuçlanıyor.
unfuddle üzerinde repository’i listelemek
Sonuç:
İlla takım çalışması şart olmasa da çalışmalarımızı versiyonlamak ve online olarak sürekli yedeğini tutmak çok önemli bir nokta. Git ve unfuddle.com bize bu noktada çok büyük kolaylık sağlıyor. Bu yazıda basit hatları ile bu konfigürasyonu nasıl sağlayacağımızı kabaca anlatmaya çalıştım. Mutlaka eksikleri vardır. Konu ile ilgili bir sorununuz olursa elimden geldiği kadarı ile yardımcı olmaya çalışırım. Ama şimdiden söyliyeyim; bu konfigürasyonu sadece bir gündür kullanıyorum 🙂
-AliAltanSaka, Ekim 2009
İlgili Siteler:
Tortoise Git (Google Code) – http://code.google.com/p/tortoisegit/
Leave a Reply
You must be logged in to post a comment.