Dağıtılmış kaynak kontrol sistemi Git 2.31'in piyasaya sürülmesi

Dağıtılmış kaynak kontrol sistemi Git 2.31 artık mevcut. Git, dallanma ve birleştirmeye dayalı esnek, doğrusal olmayan geliştirme araçları sağlayan, en popüler, güvenilir ve yüksek performanslı sürüm kontrol sistemlerinden biridir. Geçmişin bütünlüğünü ve geriye dönük değişikliklere karşı direnci sağlamak için, her bir taahhütte önceki geçmişin tamamının örtülü karması kullanılır; bireysel etiketleri ve taahhütleri geliştiricilerin dijital imzalarıyla sertifikalandırmak da mümkündür.

Önceki sürümle karşılaştırıldığında yeni sürüm, 679 geliştiricinin katılımıyla hazırlanan ve 85'ü ilk kez geliştirmede yer alan 23 değişiklik içeriyordu. Ana yenilikler:

  • Cron desteklemeyen sistemlerde periyodik çalışma yapmanızı sağlayan “git bakım” komutu eklendi. Örneğin, yeni bir komut kullanarak, depo paketleme işleminin periyodik olarak çalışmasını düzenleyebilirsiniz, böylece çeşitli komutlar çalıştırılırken paketleme otomatik olarak gerçekleştirilirken deponun kilitlenmesini beklemenize gerek kalmaz. "Git bakımı" komutu, etkileşimli oturumu engellemeden, arka planda deponun en uygun yapısını korumak için optimizasyonlar ve işlemler gerçekleştirmenize olanak tanır - saatte bir, uzak bir depodan yeni nesneleri proaktif olarak indirmek ve güncellemek için çalışmalar yapılır. taahhüt grafiğini içeren dosya ve depoyu paketleme süreci her gece başlar.
  • Paket dosyaları için diskte ters dizin (revindex) bulundurma desteği eklendi. Git'in tüm verileri ayrı dosyalarda bulunan nesneler biçiminde sakladığını hatırlayın. Depoyla çalışmanın verimliliğini artırmak için nesneler ek olarak paket dosyalarına yerleştirilir; burada bilgiler birbirini takip eden nesnelerin akışı şeklinde sunulur (nesneleri git fetch ve git push ile aktarırken benzer bir format kullanılır) komutlar). Her paket dosyası için, nesne tanımlayıcısını kullanarak verilen nesnenin depolandığı paket dosyasındaki uzaklığı çok hızlı bir şekilde belirlemenize olanak tanıyan bir dizin dosyası (.idx) oluşturulur. Git 2.31'de tanıtılan ters dizin (.rev), bir nesnenin paket dosyasına yerleştirilmesiyle ilgili bilgilerden bir nesne tanımlayıcısının belirlenmesi sürecini optimize etmeyi amaçlamaktadır.

    Daha önce bu tür bir dönüşüm, paket dosyası ayrıştırılırken anında gerçekleştiriliyordu ve yalnızca bellekte saklanıyordu, bu da benzer dizinlerin yeniden kullanılmasına izin vermiyordu ve her seferinde dizini oluşturmaya zorluyordu. Bir dizin oluşturma işlemi, bir dizi nesne konumu çifti oluşturmaya ve bunu konuma göre sıralamaya dayanır; bu, büyük paket dosyaları için uzun zaman alabilir.

    Örneğin, doğrudan indeks kullanan nesnelerin içeriğini görüntülemeye yönelik bir işlem, nesneye konum verilerinin indekslenmediği nesnelerin boyutunu görüntülemeye yönelik bir işlemden 62 kat daha hızlıydı. Ters endeksi kullandıktan sonra bu işlemler yaklaşık olarak aynı süreyi almaya başladı. Ters dizinler ayrıca, hazır verileri doğrudan diskten aktararak, getirme ve itme komutlarını yürütürken nesne gönderme işlemlerini hızlandırmanıza da olanak tanır. Varsayılan olarak ters dizinler oluşturulmaz; bunları oluşturmak için “git config pack.writeReverseIndex true” ayarını etkinleştirmeniz ve ardından depoyu “git repack -Ad” komutuyla paketlemeniz gerekir.

  • Taahhütler hakkındaki bilgilere erişimi optimize etmek için kullanılan taahhüt grafiği dosya formatındaki görünüme dayalı performans optimizasyonları, taahhütlerle ek işlemleri hızlandırmak için kullanılabilecek taahhüt oluşturma numarası hakkındaki yeni veriler eklendi.
  • Yeni depolarda varsayılan olarak kullanılan ana dalın adını yeniden tanımlamak için seçenekler eklendi (init.defaultBranch ayarı). Harici depolara erişirken git, HEAD tarafından işaret edilen şubeyi kontrol etmeye çalışır; harici sunucu varsayılan olarak "ana" dalı kullanıyorsa, "git clone" işlemi "ana"yı yerel olarak kontrol etmeye çalışacaktır. Git 2.31 artık boş depolar için bu tür ödemeyi destekliyor. Örneğin, ilk yamaları eklemeden önce yeni bir depoyu yerel olarak klonlarken, yerel kopya artık harici sunucuda ayarlanan varsayılan yukarı akış adını içerecektir.
  • Nesnelerin boyutlarının bir özetini sağlamak için "git rev-list" komutuna --disk-usage seçeneği eklendi.
  • Birleştirme arka ucunda yapılacak değişiklik beklentisiyle, yeniden adlandırma tespiti önemli ölçüde optimize edildi.
  • Eski PCRE1 düzenli ifade kitaplığına yönelik destek durduruldu.
  • Hashing algoritmasından bağımsız olarak kısaltılmış bağlantıların kullanımını zorla yasaklamak mümkündür. core.abbrev parametresine “no” değeri atanarak yasaklama etkinleştirilir.
  • Göreli yolların mı yoksa mutlak yolların mı çıkacağını açıkça belirtmek için "git rev-parse" komutuna "--path-format=(absolute|relative)" seçeneği eklendi.
  • Bash tamamlama komut dosyaları, kendi "git" alt komutlarınız için tamamlama kuralları eklemenizi kolaylaştırır.
  • Standart giriş akışından referansları okumak için "git bundle" komutuna --stdin seçeneği eklendi.
  • "git log" komutuna yeni bir seçenek eklendi: "--diff-merges=" "
  • Yinelenen çıktıyı ortadan kaldırmak için "git ls-files" komutuna "--deduplicatecan" seçeneği eklendi.
  • Bir dizi işlemi hariç tutmak için yeni maskeler eklendi - " ^!” Ve " ^- "
  • Karşılaştırılan aralığın yalnızca bir tarafını göstermek için "git range-diff" komutuna "--only-only" ve "--right-only" seçenekleri eklendi.
  • "git diff" ve "git log" komutlarına --skip-to= seçenekleri eklendi " ve "—-döndürme= » Başlangıç ​​yollarını atlamak veya sonuna gitmek için.
  • "git difftool" komutuna "--skip-to=" seçeneği eklendi » Kesintiye uğrayan bir oturumu rastgele bir yoldan sürdürmek için.
  • Geliştiriciler arasındaki çatışma durumlarını çözmeye yönelik temel ilkeleri tanımlayan Davranış Kuralları, sürüm 2.0'a güncellendi (daha önce sürüm 1.4 kullanılıyordu).

    Kaynak: opennet.ru

Yorum ekle