GIT Nedir? ve Windows için GIT

28 Kas

GIT bir versiyon kontrol sistemidir. Yazılımcılar için geliştirme sürecinde önemli bir yeri olan versiyonlama mekanizmasını otomatikleştirebilen bir sistemdir. GIT, kökeni Linux tabanlı bir topluluk olsa da Windows tarafındaki gönüllüler sayesinde Windows dünyasına da kazandırılmıştır. Windows için GIT geliştirmek amacıyla MSys/MinGW projeleri baz alınmıştır.

Git for Windows(MinGW) projesi temel düzeyde Git kullanıcılarına hitap ederken, msysGit projesi geliştiriciler, testçiler, bakım ve dağıtım ekibi tarafına hitap etmektedir.

Hem MinGW hem de msysGit projelerinin depolama yeri Web tabanlı GitHub platformudur.

Ben kendi projelerimi versiyonlamak için msysGit uygulamasını kullanıyorum. msysGit programına buradan ulaşabilirsiniz. Programı indirip kurmak gayet basit olduğu için kurulum anlatımı yapmadım.

Programın kullanım arayüzü olarak komut ve GUI destekli olmak üzere iki seçeneği bulunmaktadır.

Git grafiksel arayüzü (Git GUI) şu şekildedir:

Git GUI

Git komut arayüz görüntüsü (Git Bash) şu şeklidedir:

Git Bash

Git Bash için bazı komutlar şu şeklidedir:

clear: Komut ekrarnını temizler.

mkdir: Bulunduğunuz dizin içerisine yeni bir dizin oluşturur.

ls: Bulunduğunuz dizindeki dosya ve dizinleri listeler.

cd: Dizin değiştirir.

git –version: Sistemde kurulu olan Git versiyonunu verir.

git init: Bulunduğu dizine “.git” adında yeni bir git deposu(repository) oluşturur.

git add: Çalıştığınız dizindeki dosyalarda oluşan değişiklikleri indekse ekler.

git status: Çalıştığınız dizindeki dosyaların indeksteki durumunu gösterir.

git commit: İndekse yazılmış tüm değişiklikleri alır ve bu değişiklikleri işaret eden yeni bir icra(commit) nesnesi oluşturur ve bu icra nesnesine şube ayarlar.

git remote: uzak depoların takma adlarını listeler.

git remote add: projenize yeni bir uzak depo ekler.

git push: Değiştirilmiş tüm yerel nesneleri uzaktaki depoda bulunan şubelere atar.

Yukarıdaki komutlar ile bir depo(repository) oluşturup uzaktaki bir depoya gönderme işlemi yapılabilmektedir. Bu komutlardan başka birçok komut vardır ancak şimdilik yeterli olacak komutlar elimizdekilerdir.

Örnek Uygulama

Geliştiriciler olarak projelerimizi versiyonlar halinde uzak bir depoda tutmak istediğimizde aklımıza ilk gelecek olan GitHub platformudur. Git de zaten bu platforma veri gönderebilmektedir.

Bu örnek uygulamamızda bir Visual Studio projemizi msysGit yardımıyla GitHub üzerinde oluşturduğumuz bir depoya(repository) göndermeye çalışalım.

Git tarafında ön bilgiye sahip olduğumuza göre bir de GitHub tarafında neler yapmamız gerektiğine göz atalım. Öncelikle GitHub web sayfasında bir hesap oluşturmamız gerekmektedir. Hesap oluşturduktan sonra GitHub web sayfasında “Create New Repository” veya “New Repository” şeklinde oluşturulmuş link yardımıyla yeni depo oluşturma sayfasına yönlendiriliriz.

GitHub New Repository

Yukarıdaki resimde de görüldüğü üzere TestConsoleApplication adında bir repository oluşturuyoruz.

Dikkat: Github üzerindeki repository içerisine veri gönderebilmek için bir güvenlik seviyesi ayarı olan SSH Key oluşturup sitedeki Account Settings bölümüne kaydetmemiz gerekmektedir. Bu işlemi Github burada bizim için anlatmış. Bu ayarı yapmadığımızda gönderdiğimiz veriyi almayacaktır.

Bu güvenlik ayarını da başarılı bir şeklide yaptıktan sonra Visual Studio ortamında oluşturulmuş “TestConsoleApplication” adında bir c# projesini Github depomuza gönderelim.

Projemizi D sürücüsü üzerinde TestConsoleApplication adında bir dizinde tutacağız ve Git üzerinden bu dizinde işlem yapacağız.

Git Commands 1,2,3

KOMUT:1 D sürücümüzde projemizin bulundupu TestConsoleApplication dizinine girer.

KOMUT:2 Dizin içerisine .git adında bir yerel depo oluşturur. Oluşturulan bu dizin (.git) gizli olabilir. Göremezsseniz klasör seçeneklerinden  “gizli dosya ve klasörleri göster” seçeneğini seçip bakabilirsiniz.

KOMUT:3 Dosya değişikliklerini indekse ekler.

Git Commands 4

KOMUT:4 Yeni bir icra(commit) nesnesi oluşturur.

Git Commands 5,6

KOMUT:5 Projeye git@github.com:bayramucuncu/TestConsoleApplication.git depo yolunu ekler.

KOMUT:6 Değiştirilmiş tüm yerel nesneleri uzak depo adersine gönderir.

Gönderdiğimiz projeye web sitesi üzerinden göz atacak olursak şu şeklide bir manzara karşımıza çıkacaktır.

Github Repository

Bu test projesi Github üzerinde oluşturulmuş genel bir projedir. Herkese açık bir şekilde düzenlenmiştir.

Tekrar görüşmek dileğiyle.

FizzBuzz Kata NCrunch ve NUnit tools

11 Kas

FizzBuzz Kata

FizzBuzz uygulaması, girilen parametrelerden

3 ile bölünebilen sayılar için sonuç Fizz
5 ile bölünebilen sayılar için sonuç Buzz
3 ve 5 ile bölünebilen sayılar için sonuç FizzBuzz
Ne 3 ile ne de 5 ile bölünebilen sayılar için sayının kendisini veren bir birim test pratiğidir.

Unit Test Assert List

1- Result_ForDivisibleByThree_IsFizz
2- Result_ForDivisibleByFive_IsBuzz
3- Result_ForDivisibleByBothThreeAndFive_IsFizzBuzz
4- Result_ForDivisibleNeitherThreeNorFive

Yukarıda birim testlerin listesi çıkarılmıştır ve bu listeye göre testler icra edilmektedir.

NOT: Makinemdeki donanım (işlemci) yetersizliğinden dolayı hem görüntü kaydı hemde Visual Studio’nun çalışması sırasında NCrunch aracı eş zamanlı derlemelerde biraz yavaş kaldı. Çünkü video kaydı başlar başlamaz işlemci %100’lere dayandı.

Tekrar görüşmek dileğiyle.

NCrunch Visual Studio Eklentisi

6 Kas

NCrunch, kodlama esnasında birim testleri (unit tests) otomatik ve eş zamanlı olarak çalıştıran bir Visual Studio eklentisidir.

Projelerini teste dayalı geliştirenler için mükemmel bir araç diyebilirim. Performans konusunda donanımınızın yeterliliğine ve test sayınıza göre NCrunch analiz süresi değişiklik gösterebilir.

NCrunch aracı, siz kodunuzu yazarken arka planda otomatik olarak kodu testlerden geçirerek durumu size bildirir.

İsterseniz testleri otomatik olarak değil de el yordamıyla da yaptırabilirsiniz. Testlerin durumunu aşağıdaki pencereden de görebilirsiniz.

Büyük projeler düşünülerek, Visual Studio IDE performansı üzerindeki etkileri en aza indirmek için, proje mimarisindeki bağımlılıkları analiz ederek,  testleri yürütme işlemi için öncelik sırasına koyar ve asenkron süreçler, ek işlemci çekirdeği kullanır.

Bir diğer özellik ise test kapsamına girmeyen kodların belirlenmesidir.

Siyah noktayla işaretlenen satırların test edilmediğini anlayabilmekteyiz. Yeşil noktayla işaretlenen kod satırlarının testlerden başarıyla geçtiğini göstermektedir.

Testlerin çalıştırılma süresini ölçen özelliği sayesinde ise uzun sürebilecek testler işaretlenir.

NCrunch aracının noktasal işaretleme özelliğinin renkleri isteğe göre değiştirilebilmektedir.

Test Driven Development yapanlar için çok iyi bir araçtır.

Visual Studio code coverage özelliğini açmak

12 Tem

Visual Studio 2010 üzerinde geliştirdiğimiz Test Driven uygulamalrın ne kadarının test kapsamında olduğunu anlamak için code coverage aracından faydalanırız. Tabi bu özellik Visual Studio default test aracıyla çalışırken geçerli. Piyasadaki diğer test araçlarını kullanıyorsanız onlara göre ayar yapmalısınız.

Code coverage özelliğini açmak için şu adımları izlemeliyiz:

  1. Solutution Explorer penceresindeki [Local].testsettings dosyasına çift tıklayın.
  2. Açılan “Test Settings” dialog penceresinde, “Data and Diagnostics”  menüsünü seçin.
  3. Açılan listede, “Code Coverage” [Resim 1] seçerek ‘”Configure” butonuna tıklayın.
  4. “Code Coverage Detail” [Resim2] penceresinden kod kapsamını merak ettiğiniz assembly yi seçin.
  5. Testinizi çalıştırın ve “Test Tools” toolbar içerisindeki “Code Coverage Results” seçeneğinden sonucu inceleyin.
Resim-1
Resim-2

İpucu: You have mixed tabs and spaces uyarısı

7 Ağu

Productivity Power Tools eklentisi yüklü olan arkadaşlar farketmişlerdir ki Visual Studio ortamında kod geliştiriken bezen aşağıda resimde göründüğü gibi bir uyarı çubuğu belirir. Uyarı: “You have mixed tabs and spaces” şeklindedir.

Bu uyarı genelde açılan tab sayısı arttıkça ortaya çıkmaktadır. Bu uyarının çıkmasını istemiyorsak şu ayarı yapmamız gerekiyor. Tools -> Options -> Listeden Productivity Power Tools seçerek Fix Mixed Tabs seçeneğini Off durumuna getiriyoruz.