Dağıtılmış sürüm kontrolü - Distributed version control

Gelen yazılım geliştirme , dağıtılmış sürüm kontrol (olarak da bilinen dağıtılmış revizyon kontrolü ) şeklidir versiyon kontrolü tamamlandı hangi kod temeli tam geçmişi dahil, her geliştiricinin bilgisayarında yansıtılır. Merkezi sürüm kontrolü ile karşılaştırıldığında, bu, otomatik yönetim dallanma ve birleştirmeyi mümkün kılar , çoğu işlemi hızlandırır (itme ve çekme dışında), çevrimdışı çalışma yeteneğini geliştirir ve yedeklemeler için tek bir konuma dayanmaz. Dünyanın en popüler sürüm kontrol sistemi olan Git , dağıtık bir sürüm kontrol sistemidir.

2010 yılında, yazılım geliştirme yazarı Joel Spolsky , dağıtılmış sürüm kontrol sistemlerini "[son] on yılda yazılım geliştirme teknolojisindeki muhtemelen en büyük ilerleme" olarak tanımladı.

Dağıtılmış ve merkezileştirilmiş

Dağıtılmış sürüm kontrol sistemleri (DVCS) , merkezi sistemlerin istemci-sunucu yaklaşımının aksine, sürüm kontrolüne eşler arası bir yaklaşım kullanır . Dağıtılmış revizyon kontrolü, yamaları eşler arası aktararak depoları senkronize eder. Kod tabanının tek bir merkezi versiyonu yoktur; bunun yerine, her kullanıcının çalışan bir kopyası ve tam değişiklik geçmişi vardır.

DVCS'nin avantajları (merkezi sistemlere kıyasla) şunları içerir:

  • Kullanıcıların bir ağa bağlı değilken verimli bir şekilde çalışmasına izin verir.
  • Ortak işlemler (taahhütler, geçmişi görüntüleme ve değişiklikleri geri alma gibi) DVCS için daha hızlıdır çünkü merkezi bir sunucuyla iletişim kurmaya gerek yoktur. DVCS ile iletişim, yalnızca değişiklikleri diğer eşler arasında paylaşırken gereklidir.
  • Özel çalışmaya izin verir, böylece kullanıcılar, yayınlamak istemedikleri erken taslaklar için bile değişikliklerini kullanabilir.
  • Çalışan kopyalar, tek bir arıza noktası olarak tek bir fiziksel makineye güvenmekten kaçınan uzaktan yedekleme işlevi görür.
  • Geliştirme dalları veya Komutan/Teğmen modeli gibi çeşitli geliştirme modellerinin kullanılmasına izin verir .
  • Projenin "yayın sürümünün" merkezi kontrolüne izin verir
  • On FOSS yazılım projelerinde oluşturmak çok daha kolaydır proje çatal çünkü liderlik çatışmaları veya tasarım anlaşmazlıkların takılan bir projeden.

DVCS'nin dezavantajları (merkezi sistemlere kıyasla) şunları içerir:

  • Tüm şubeler ve revizyon geçmişi varsayılan olarak yerel makineye kopyalandığından, bir havuzun ilk kullanıma alınması, merkezi bir sürüm kontrol sistemindeki kullanıma kıyasla daha yavaştır.
  • Çoğu merkezi VCS'nin parçası olan ve grafik varlıkları gibi birleştirilemeyen ikili dosyalar veya çok karmaşık tek dosya ikili dosyaları veya XML paketleri (örneğin ofis belgeleri, PowerBI dosyaları, SQL Server) söz konusu olduğunda hala önemli bir rol oynayan kilitleme mekanizmalarının olmaması Veri Araçları BI paketleri vb.).
  • Her kullanıcının eksiksiz kod tabanı geçmişinin eksiksiz bir kopyasına sahip olması için ek depolama alanı gerekir.
  • Her katılımcının yerel olarak savunmasız bir kopyası olduğundan, kod tabanının daha fazla maruz kalması.

Bazı orijinal olarak merkezileştirilmiş sistemler artık bazı dağıtılmış özellikler sunmaktadır. Örneğin Subversion , ağ olmadan birçok işlemi yapabilir. Team Foundation Server ve Visual Studio Team Services artık Git'i barındırarak merkezi ve dağıtılmış sürüm kontrol havuzlarını barındırıyor.

Benzer şekilde, bazı dağıtılmış sistemler, Microsoft tarafından çok büyük kod tabanlarıyla çalışmak üzere geliştirilen ve dosyaları yalnızca yerel depolamaya indiren bir sanal dosya sistemini ortaya çıkaran Git için Sanal Dosya Sistemi gibi artık ödeme süreleri ve depolama maliyetleri sorunlarını azaltan özellikler sunuyor. ihtiyaç duydukları gibi.

İş modeli

Dağıtılmış model, Linux çekirdek projesi gibi kısmen bağımsız geliştiricilere sahip büyük projeler için genellikle daha uygundur, çünkü geliştiriciler bağımsız olarak çalışabilir ve değişikliklerini birleştirme (veya reddetme) için gönderebilir. Dağıtılmış model, özel kaynak kodu katkı iş akışlarının benimsenmesine esnek bir şekilde izin verir. Entegratör iş akışı en yaygın olarak kullanılmaktadır. Merkezileştirilmiş modelde, geliştiriciler, farklı sürümlerle ilgili sorunlardan kaçınmak için çalışmalarını seri hale getirmelidir.

Merkez ve şube depoları

Her projenin, proje yürütücüleri tarafından yönetilen resmi depo olarak kabul edilen merkezi bir havuzu vardır. Geliştiriciler, kod tabanının özdeş yerel kopyalarını oluşturmak için bu havuzu klonlar. Merkezi depodaki kaynak kodu değişiklikleri, yerel depo ile periyodik olarak senkronize edilir.

Geliştirici, yerel deposunda yeni bir dal oluşturur ve bu daldaki kaynak kodunu değiştirir. Geliştirme tamamlandıktan sonra, değişikliğin merkezi depoya entegre edilmesi gerekir.

Çekme istekleri

Dağıtılmış bir sürüm kontrol sistemi kullanan bir kaynak kod deposuna yapılan katkılar, genellikle birleştirme talebi olarak da bilinen bir çekme talebi aracılığıyla yapılır . Katkıda bulunan kişi, proje yürütücüsünden kaynak kodu değişikliğini çekmesini ister , bu nedenle "çekme isteği" adı verilir. Sürdürücü zorundadır birleştirme katkısı kaynak tabanının bir parçası haline gelmelidir eğer çekme isteğini.

Geliştirici, bakıcıları yeni bir değişiklikten haberdar etmek için bir çekme talebi oluşturur; her çekme isteğiyle bir yorum dizisi ilişkilendirilir. Bu , kod değişikliklerinin odaklanmış tartışmasına izin verir . Gönderilen çekme istekleri, depo erişimi olan herkes tarafından görülebilir. Bir çekme talebi, bakıcılar tarafından kabul edilebilir veya reddedilebilir.

Çekme talebi gözden geçirilip onaylandıktan sonra depoyla birleştirilir. Yerleşik iş akışına bağlı olarak, kodun resmi yayına dahil edilmeden önce test edilmesi gerekebilir. Bu nedenle, bazı projeler, denenmemiş çekme isteklerini birleştirmek için özel bir dal içerir. Diğer projeler , Travis CI gibi sürekli bir entegrasyon aracı kullanarak her çekme isteğinde otomatik bir test paketi çalıştırır ve gözden geçiren, herhangi bir yeni kodun uygun test kapsamına sahip olup olmadığını kontrol eder.

Tarih

İlk açık kaynaklı DVCS sistemleri Arch , Monotone ve Darcs'ı içeriyordu . Ancak, açık kaynaklı DVCS'ler Git ve Mercurial'ın piyasaya sürülmesine kadar hiçbir zaman çok popüler değildi .

BitKeeper geliştirilmesinde kullanıldı Linux çekirdeği 2002'den 2005 geliştirilmesi için Git , serbest lisans iptaline yönelik bitkeeper geliştiren şirket kararı neden oldu şimdi dünyanın en popüler sürüm kontrol sistemi olduğunu Linus Torvalds ve bazı diğer Linux çekirdeği geliştiricileri daha önce yararlanmıştı.

Ayrıca bakınız

Referanslar

Dış bağlantılar