Git 2.37 kaynak denetimi sürümü

Dağıtılmış kaynak kontrol sistemi Git 2.37'in yayımlandığı duyuruldu. 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.

395 geliştiricinin katılımıyla hazırlanan ve 75'sı ilk kez geliştirmede görev alan yeni sürümde, önceki sürüme göre 20 değişiklik benimsendi. Ana yenilikler:

  • Deponun sadece bir kısmını kapsayan kısmi indeksler (seyrek indeks) mekanizması yaygın kullanıma hazır hale getirildi. Kısmi dizinler, kısmi klonlama (seyrek kullanıma alma) işlemleri gerçekleştiren veya havuzun tamamlanmamış bir kopyasıyla çalışan depolarda performansı artırabilir ve yerden tasarruf sağlayabilir. Yeni sürüm, kısmi dizinlerin git show, git sparse-checkout ve git stash komutlarına entegrasyonunu tamamlıyor. Kısmi dizin kullanmanın en dikkat çekici performans avantajı, bazı durumlarda yürütme hızında %80 artış sağlayan git stash komutunda görülüyor.
  • Depoda referans verilmeyen (dallar veya etiketler tarafından referans verilmeyen) erişilemeyen nesnelerin paketlenmesi için yeni bir "cruft pack" mekanizması uygulandı. Ulaşılamayan nesneler çöp toplayıcı tarafından silinir, ancak yarış koşullarını önlemek için silinmeden önce belirli bir süre depoda kalır. Ulaşılamayan nesnelerin ortaya çıkma periyodunu izlemek için, bunlara benzer nesnelerin değişim zamanını gösteren etiketler eklemek gerekir; bu, bunların tüm nesnelerin ortak bir değişim zamanına sahip olduğu tek bir paket dosyasında saklanmasına izin vermez. Daha önce, her nesnenin ayrı bir dosyaya kaydedilmesi, henüz silinmeye uygun olmayan çok sayıda yeni, ulaşılamayan nesne olduğunda sorunlara yol açıyordu. Önerilen "cruft pack" mekanizması, erişilemeyen tüm nesneleri tek bir paket dosyasında saklamanıza ve her nesnenin değişiklik zamanına ilişkin verileri ".mtimes" uzantılı bir dosyada saklanan ayrı bir tabloya yansıtmanıza olanak tanır.
  • Windows ve macOS için, dosya sistemindeki değişiklikleri izlemeye yönelik yerleşik bir mekanizma vardır; bu, "git durumu" gibi işlemleri gerçekleştirirken tüm çalışma dizininin yinelenmesinden kaçınmanıza olanak tanır. Önceden, değişiklikleri izlemek için, FS'deki değişiklikleri izlemeye yönelik Watchman gibi harici yardımcı programlar kancalar aracılığıyla bağlanabiliyordu, ancak bu, ek programların ve yapılandırmanın yüklenmesini gerektiriyordu. Artık belirtilen işlevsellik yerleşiktir ve “git config core.fsmonitor true” komutuyla etkinleştirilebilir.
  • "git sparse-checkout" komutunda, kısmi klonlama için şablon tanımlama yöntemi olan "-cone" moduna alternatif olan desteğin geçersiz olduğu bildirildi; bu, deponun klonlamaya tabi olan kısmını belirlerken izin verir. Kısmi dizinlerin optimizasyonu için kullanılmasına izin vermeyen “.gitignore” sözdizimini kullanarak tek tek dosyaları listelemek için klonlama işlemi.
  • Diskteki değişiklikleri temizlemek için fsync() çağrısının yapılandırılmasında artan esneklik. "Core.fsyncMethod" parametresine "toplu" senkronizasyon stratejisi desteği eklendi; bu, tek bir fsync() tarafından sıfırlanan geri yazma önbelleğindeki değişiklikleri toplayarak çok sayıda ayrı dosya yazarken işi hızlandırmaya olanak tanır. Arama. “git add” komutu kullanılarak 500 dosyanın eklenmesiyle sonuçlanan test, yeni mod etkinleştirildiğinde 0.15 saniyede, fsync() çağrısı her dosya için 1.88 saniyede ve fsync kullanılmadan - 0.06 saniyede tamamlandı.
  • "Git log" ve "git rev-list" gibi dal geçiş komutları artık "-since-as-filter=X" seçeneğine sahip ve bu, "X"ten daha eski olan taahhütlerle ilgili bilgileri filtrelemenize olanak tanıyor. “—since” seçeneğinin aksine, yeni komut, belirtilen süreden daha eski olan ilk işleme sonrasında aramayı durdurmayan bir filtre olarak uygulanır.
  • "Git Remote" komutunda "-v" bayrağını belirtirken deponun kısmi klonları hakkında bilgi görüntülenir.
  • "warn", "die" ve "allow" değerlerini alabilen "transfer.credentialsInUrl" ayarı eklendi. “Uzaktan” parametresinde belirtilmişse. .url" düz metin kimlik bilgileri, "getirme" veya "itme" işlemini gerçekleştirmeye çalışırken, "transfer.credentialsInUrl" ayarı "die" olarak ayarlanırsa bir hatayla veya "warn" olarak ayarlandığında bir uyarıyla başarısız olur.
  • Varsayılan olarak, Perl'den C'ye yeniden yazılan "git add -i" komutunun etkileşimli modunun yeni uygulaması etkindir.

Kaynak: opennet.ru

Yorum ekle