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

Mevcut dağıtılmış bir kaynak kontrol sisteminin piyasaya sürülmesi Git 2.26.0. 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, 504 geliştiricinin katılımıyla hazırlanan ve 64'i ilk kez geliştirmede yer alan 12 değişiklik içeriyordu. Ana yenilikler:

  • Varsayılan olarak değiştirildi ikinci versiyon Bir istemci Git sunucusuna uzaktan bağlandığında kullanılan Git iletişim protokolü. Protokolün ikinci versiyonu, sunucu tarafındaki dalları ve etiketleri filtreleme ve istemciye kısaltılmış bir bağlantı listesi döndürme yeteneği sağlaması açısından dikkate değerdir. Önceden, herhangi bir çekme komutu, müşteri yalnızca bir dalı güncellediğinde veya depo kopyasının güncel olup olmadığını kontrol ederken bile, müşteriye her zaman deponun tamamındaki referansların tam listesini gönderiyordu. Bir diğer dikkate değer yenilik, araç setinde yeni işlevler kullanıma sunuldukça protokole yeni yetenekler ekleyebilme yeteneğidir. İstemci kodu eski protokolle uyumlu kalır ve hem yeni hem de eski sunucularla çalışmaya devam edebilir, sunucu ikinciyi desteklemiyorsa otomatik olarak ilk sürüme geri dönebilir.
  • “git config” komutuna “-show-scope” seçeneği eklenerek belirli ayarların tanımlandığı yerin tespit edilmesi kolaylaştırılmıştır. Git, ayarları farklı yerlerde tanımlamanıza olanak tanır: depoda (.git/info/config), kullanıcı dizininde (~/.gitconfig), sistem genelindeki yapılandırma dosyasında (/etc/gitconfig) ve komut aracılığıyla hat seçenekleri ve ortam değişkenleri. Git config'i çalıştırırken istenen ayarın tam olarak nerede tanımlandığını anlamak oldukça zordur. Bu sorunu çözmek için "--show-origin" seçeneği mevcuttu, ancak yalnızca ayarın tanımlandığı dosyanın yolunu gösterir; bu, dosyayı düzenlemeyi düşünüyorsanız faydalıdır, ancak eğer düzenleme yapacaksanız faydası olmaz. "--system", "--global" veya "-local" seçeneklerini kullanarak "git config" aracılığıyla değeri değiştirmeniz gerekir. Yeni "--show-scope" seçeneği değişken tanımı bağlamını görüntüler ve -show-origin ile birlikte kullanılabilir:

    $ git --list --show-scope --show-origin
    genel dosya:/home/user/.gitconfig diff.interhunkcontext=1
    genel dosya:/home/user/.gitconfig push.default=current
    […] yerel dosya:.git/config Branch.master.remote=origin
    yerel dosya:.git/config Branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'fark.*'
    küresel fark istatistik genişliği 35
    yerel diff.colormoved düz

    $ git config --global --unset diff.statgraphwidth

  • Bağlama ayarlarında kimlik bilgileri URL'lerde maske kullanımına izin verilir. Git'teki tüm HTTP ayarları ve kimlik bilgileri, hem tüm bağlantılar (http.extraHeader, credential.helper) hem de URL tabanlı bağlantılar (credential.https://example.com.helper, credential.https: //example.helper) için ayarlanabilir. com.helper). Şimdiye kadar *.example.com gibi joker karakterlere yalnızca HTTP ayarlarında izin veriliyordu, ancak kimlik bilgisi bağlama için desteklenmiyordu. Git 2.26'da bu farklılıklar ortadan kaldırılmıştır ve örneğin bir kullanıcı adını tüm alt alan adlarına bağlamak için artık şunları belirtebilirsiniz:

    [kimlik bilgisi "https://*.example.com"]

    kullanıcı adı = taylorr

  • Kısmi klonlama (kısmi klonlar) için deneysel desteğin genişletilmesi devam ediyor ve verilerin yalnızca bir kısmını aktarmanıza ve havuzun tamamlanmamış bir kopyasıyla çalışmanıza olanak tanıyor. Yeni sürüm, "git sparse-checkout add" adlı yeni bir komut ekler; bu komut, bu tür dizinlerin tümünü "git" komutu aracılığıyla bir kerede listelemek yerine, "ödeme" işlemini çalışma ağacının yalnızca bir kısmına uygulamak için ayrı ayrı dizinler eklemenize olanak tanır. seyrek ödeme seti" (her seferinde listenin tamamını yeniden belirtmeden tek tek dizin ekleyebilirsiniz).
    Örneğin, bir git/git deposunu blob işlemeden klonlamak, ödemeyi yalnızca çalışan kopyanın kök dizini ile sınırlamak ve "t" ve "Belgeler" dizinleri için ödemeyi ayrı ayrı işaretlemek için şunları belirtebilirsiniz:

    $ git clone --filter=blob:none --sparse [e-posta korumalı]:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git sparse-checkout add t
    ....
    $ git sparse-checkout add Belgeler
    ....
    $ git seyrek ödeme listesi
    belgeleme
    t

  • Hem deponun mevcut içeriğini hem de geçmiş revizyonları aramak için kullanılan “git grep” komutunun performansı önemli ölçüde iyileştirildi. Aramayı hızlandırmak için, çalışma ağacının içeriğini birden fazla iş parçacığı (“git grep –threads”) kullanarak taramak mümkündü, ancak geçmiş revizyonlarda arama tek iş parçacıklıydı. Artık bu sınırlama, nesne deposundan okuma işlemlerini paralelleştirme yeteneğinin uygulanmasıyla ortadan kaldırılmıştır. Varsayılan olarak iş parçacığı sayısı CPU çekirdeği sayısına eşit olarak ayarlanmıştır; bu artık çoğu durumda açıkça "-threads" seçeneğinin ayarlanmasını gerektirmez.
  • Deponun birkaç çalışma kopyasıyla çalışmanıza olanak tanıyan "git worktree" komutunun alt komutlarının, yollarının, bağlantılarının ve diğer argümanlarının girişinin otomatik olarak tamamlanması için destek eklendi.
  • ANSI kaçış dizilerine sahip parlak renkler için destek eklendi. Örneğin, vurgu renkleri ayarlarında “git config –color” veya “git diff –color-moved” parlak mavi için “--format” seçeneğini kullanarak “%C(brightblue)” belirtebilirsiniz.
  • Komut dosyasının yeni sürümü eklendi fsmonitor-bekçimekanizma ile entegrasyonun sağlanması Facebook Bekçisi dosya değişikliklerinin takibini ve yeni dosyaların görünümünü hızlandırmak için. Git güncellendikten sonra gereklidir vekil depoya bağlayın.
  • Bit eşlemleri kullanırken kısmi klonları hızlandırmak için optimizasyonlar eklendi
    (bitmap makineleri) çıktıyı filtrelerken tüm nesnelerin tam olarak aranmasını önlemek için. Kısmi klonlama sırasında blobların kontrolü (—filter=blob:none ve —filter=blob:limit=n) artık gerçekleştiriliyor
    önemli ölçüde daha hızlı. GitHub, bu optimizasyonları ve kısmi klonlamaya yönelik deneysel desteği içeren yamaları duyurdu.

  • "git rebase" komutu, 'patch+apply' yerine varsayılan 'birleştirme' mekanizması (daha önce "rebase -i" için kullanılıyordu) kullanılarak farklı bir arka uca taşındı. Arka uçlar bazı küçük yönlerden farklılık gösterir; örneğin, bir çatışmayı çözdükten sonra bir işleme devam ettikten sonra (git rebase --continue), yeni arka uç taahhüt mesajını düzenlemeyi teklif ederken, eski arka uç sadece eski mesajı kullanıyordu. Eski davranışa geri dönmek için "--apply" seçeneğini kullanabilir veya 'rebase.backend' yapılandırma değişkenini 'apply' olarak ayarlayabilirsiniz.
  • .netrc aracılığıyla belirtilen kimlik doğrulama parametrelerine yönelik bir işleyici örneği, kullanıma hazır kullanıma uygun bir forma indirgenmiştir.
  • Dijital imza doğrulamasını gerçekleştiren çeşitli öğeler için minimum güven düzeyini ayarlamak amacıyla gpg.minTrustLevel ayarı eklendi.
  • "git rm" ve "git stash"a "--pathspec-from-file" seçeneği eklendi.
  • SHA-2 yerine SHA-1 karma algoritmasına geçiş hazırlıkları kapsamında test paketlerinin iyileştirilmesine devam edildi.

Kaynak: opennet.ru

Yorum ekle