Git Versiyon Kontrolü Nedir?

Git versiyon Kontrolü Nedir?

Git versiyon Kontrolü bir ya da daha fazla dosya üzerinde yapılan değişiklikleri kaydeden ve daha sonra belirli bir versiyona geri dönebilmenizi sağlayabilen sisteme verilen addır. Yaygın olarak yazılımcıların kaynak kod dosyalarının versiyon kontrolünü yapmak için kullanılsa da her türlü dokümanın versiyon kontrolü için de kullanılabilir.

Versiyon takip ve kontrolünün on-line platformda web tabanlı olarak ortak bir sistem üzerinden yapılabiliyor olması, aynı zamanda bir porje üzerinde birden fazla kişinin dosyalar üzerinde ortak çalışabilmesi ve her bir geliştiricinin ayrı ayrı yaptığı tüm değişikliklerin versiyon olarak tutulabilmesini sağlamaktadır.

Versiyon takip ve kontrol sistemi sayesinde dosyaların ya da bütün projenin geçmişteki belirli bir versiyonuna erişmenizi, zaman içinde yapılan değişiklikleri karşılaştırmanızı, soruna neden olan şeyde en son kimin değişiklik yaptığını, belirli bir hatayı kimin, ne zaman sisteme dahil ettiğini ve daha başka pek çok şeyi görebilmenizi sağlar. Öte yandan, Versiyon kontrol ve takip sistemi kullanmak, bir hata yaptığınızda ya da bazı dosyaları yanlışlıkla sildiğinizde durumu kolayca telâfi etmenize yardımcı olur. Üstelik, bütün bunlar size kayda değer bir ek yük de getirmez.

Local Versiyon Kontrol Sistemleri
Çoğu insan, dosyaları bir klasöre (akılları başlarındaysa tarih ve zaman bilgisini de içeren bir klasöre) kopyalayarak versiyon kontrolü yapmayı tercih eder. Bu yaklaşım çok yaygındır, çünkü çok kolaydır; ama aynı zamanda hatalara da alabildiğine açıktır. Hangi klasörde olduğunuzu unutup yanlış dosyaya yazabilir ya da istemediğiniz dosyaların üstüne kopyalama yapabilirsiniz.

Çözüm için, yazılımcılar uzun zaman önce, dosyalardaki bütün değişiklikleri versiyon kontrolüne alan basit bir veritabanına sahip olan yerel Versiyon kontrol ve takip sistemi geliştirdiler. (Linus Torwalds liderliğinde)

RCS yaygın kullanılan bir versiyon kontrol ve takip sistemlerinden biridir. MacOSX, Developer Tools’u yüklenirken rcs komutunu kurmaktadır. İki versiyon dosyaları arasındaki farkları özel bir biçimde diske kaydeder. Daha sonra, bu yamaları birbirine ekleyerek, bir dosyanın belirli bir versiyonda ki görünümünü yeniden oluşturur.

On-Line ortak Versiyon Kontrol ve Takip Sistemleri
İnsanların karşılaştığı ikinci büyük sorun, başka sistemlerdeki programcılarla birlikte çalışma ihtiyacından ileri gelir. Bu sorunla başa çıkabilmek için, On-line Versiyon kontrol ve takip sistemi geliştirilmiştir. Bu sistemler, örneğin CVS, Subversion ve Perforce, versiyon kontrolüne alınan bütün dosyaları tutan bir sunucu ve bu sunucudan dosyaları seçerek alan (check out) istemcilerden oluşur. Bu yöntem, yıllarca, versiyon kontrolünde standart yöntem olarak kullanılmıştır.

Bu yöntem özellikle local versiyon kontrol ve takip sistemlerine göre daha avantajlıdır. Örneğin, bir projedeki herkes, diğerlerinin ne yaptığından bir parça haberdardır. Sistem yöneticileri kimin hangi yetkilere sahip olacağını oldukça ayrıntılı biçimde düzenleyebilirler; üstelik bir Versiyon kontrol ve takip sistemlerini yönetmek, her istemcide ayrı ayrı kurulu olan yerel veritabanlarını yönetmeye göre çok daha kolaydır.

Ne var ki, bu yöntemin de ciddi bazı sıkıntıları vardır. En aşikar sıkıntı, merkezi sunucunun arızalanması durumunda ortaya çıkacak kırılma noktası problemidir. Sunucu bir saatliğine çökecek olsa, o bir saat boyunca kullanıcıların çalışmalarını sisteme aktarmaları ya da çalıştıkları şeylerin versiyonlanmış kopyalarını kaydetmeleri mümkün olmayacaktır. Merkezi veritabanının sabit diski bozulacak olsa, yedekleme de olması gerektiği gibi yapılmamışsa, elinizdeki her şeyi —projenin, kullanıcıların bilgisayarlarında kalan yerel bellek kopyaları (snapshot) dışındaki bütün tarihçesini— kaybedersiniz. Yerel SKS’ler de bu sorundan muzdariptir —projenin bütün tarihçesini tek bir yerde tuttuğunuz sürece her şeyi kaybetme riskiniz vardır.

Dağıtık Versiyon Kontrol Sistemleri
Bu noktada Dağıtık Versiyon Kontrol Sistemleri devreye girer. (Git, Mercurial, Bazaar ya da Darcs vb.), istemciler (kullanıcılar) dosyaların yalnızca en son bellek kopyalarını alır ve yazılım havuzunu (repository) bütünüyle (kopyalarlar).

Böylece, sunuculardan biri çökerse, ve o sunucu üzerinden ortak çalışma yürüten sistemler varsa, istemcilerden birinin yazılım havuzu sunucuya geri yüklenerek sistem kurtarılabilir. Her seçme (checkout) işlemi esasında bütün verinin yedeklenmesiyle sonuçlanır.

Bu yapılardan bir çoğu birden çok uzak uç birimde ki yazılım havuzları ile çalışır. Bu sayede aynı proje için aynı anda farklı kişilerle farklı biçimlerde ortak çalışmalar yürütülebilir. Bu, birden çok ortak iş akışı ile birlikte çalışılmasını sağlamış olur.

Git versiyon kontrol ve takibi

Özet olarak;
1. Hem merkezi hem de tüm kullanıcıların kendi havuzlarında tüm sistemin aynı anda güvenle durması,
2. Her paydaş tarafından yapılan her değişikliğin Git sistemleri tarafından ortak versiyon numarası ile numaralandırılması
3. İstenen her versiyona istendiği anda geri dönüşün sağlanabilmesi

Konularını sağlayabilmektedir.

MVC for software development

MVC is a framework for all kind of programming language.  Now the ASP.Net has a new version with MVC.  (Published by Yusuf FIRAT 09.09.2018/Istanbul)

The description of the MVC is the Model View Controller. Actually, MVC separates your codes and views and the Controller is connected the two modules. Let me explain; If you develop all programming in a document you will mix when your codes increase. But if you separate codes and front-end documents you can easily develop the program.  Or else, it mixes,  programmers, call it spaghetti code. We say for that in Turkish: “Samanlikta igne aramak” (Look for a needle in a haystack). If you use MVC framework platform, you can easily develop your programs.


Model;
Model is a code repository. All your codes are here like connection strings, database management codes, SQL codes etc.

V: View;
The view mostly contains the page codes shown to visitors. Such as front end codes, CSS codes, javascript codes. And the Model’s using codes are here.

C: Controller;
The controller is a module to connect the Model and View.  When the user writes an address in the browser’s bar then the controller’s trigger starts. Or when users click a button or link or an ajax function etc.


I think so all programming language will support MVC very close years. Because of the world going to a global programmers platform. Like git systems. Git Hub, git lab etc. If you think typing for global scripts you have to start MVC systems.

Yusuf FIRAT. (09.09.2018 / Istanbul).

If there is a typographical error, please let me feed-back for correct.