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

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

  • Kısmi klonlama olasılığı stabilizasyona ve tam hazırlığa yaklaşıyor, bu da verilerin yalnızca bir kısmını aktarmanıza ve havuzun eksik bir kopyasıyla çalışmanıza olanak tanıyor. Tipik bir klon, değişiklik geçmişindeki her dosyanın her sürümü de dahil olmak üzere depodaki tüm verileri kopyalar. Çok büyük depolar için, geliştirici dosyaların yalnızca bir alt kümesiyle ilgilense bile, verilerin kopyalanması trafikte ve disk alanında önemli bir artışa neden olur. Yeni sürüm, çalışan kaynak ağacının yalnızca bir kısmını almayı kolaylaştırmak için deneysel bir "sparse-checkout" komutu ve "clone" komutu için yeni bir "--sparse" seçeneği sunuyor.

    Daha önce seçici klonlama işlemi görev aracılığıyla gerçekleştiriliyordu filtreler Gereksiz içeriği filtrelemek için ve eksik dosyaların doldurulmasını devre dışı bırakmak için “—ödeme yok” seçeneği. Bundan sonra, ödeme işlemini gerçekleştirmeden önce, core.sparseCheckout ayarını etkinleştirmek ve .git/info/sparse-checkout dosyasında hariç tutulan yol modellerinin bir listesini tanımlamak gerekiyordu. Örneğin, bloblar olmadan klonlamak ve dosyaların derinliği 2 veya daha fazla olan alt dizinlerden çıkarılmasını önlemek için şunu çalıştırabilirsiniz:

    git clone --filter=blob:none --no-checkout /deponuz/burada repo
    $ cd deposu
    $ cat >.git/info/sparse-checkout
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git ödeme .

    Yeni "git sparse-checkout" komutu, işi büyük ölçüde basitleştirir ve eksik bir depoyla işi organize etme sürecini aşağıdaki komutlara azaltır:

    git clone --filter=blob:none --sparse /deponuz/burada repo
    git seyrek ödeme seti /yol/giden/kontrol/çıkış

    Sparse-checkout komutu, .git/info/sparse-checkout'u manuel olarak ayarlamadan ödeme (set) için bir yol listesi ayarlamanıza, ayrıca mevcut yol listesini (liste) görüntülemenize ve kısmi kontrolleri etkinleştirmenize veya devre dışı bırakmanıza (etkinleştir) olanak tanır. /devre dışı bırakmak).

    Çok geniş depolar ve şablon listeleriyle çalışmayı optimize etmek için "git config core.sparseCheckoutCone", izin verilen kalıpları sınırlar (rastgele .gitignore kalıpları yerine, belirli bir alt dizindeki tüm yolların ve tüm dosyaların kullanıma alınıp alınmayacağını belirtebilirsiniz). Örneğin, büyük bir depoda "A/B/C" dizini varsa ve tüm iş "C" alt dizininde yoğunlaşmışsa, sparseCheckoutCone modunu etkinleştirdiğinizde "git sparse-checkout set A/B/" komutu görüntülenir. C”, “C”nin tüm içeriğini çıkaracaktır, ancak “A” ve “B”den yalnızca “C” ile çalışmak için gerekli olan parçaları çıkaracaktır.

  • Belgelerden ("git rebase -h"), "--preserve-merges" seçeneğine yapılan tüm referanslar kaldırılmıştır; bu seçenek kullanımdan kaldırılmıştır ve bunun yerine bir dizi işlemi taşımak için kullanılması gerekir.git rebase --rebase-birleştirmeleri".
  • Mail listelerine gönderilen yamalı mesajların okunabilirliğini artırmak için “git format-patch —açıklamadan kapak konusu” seçeneği eklendi, belirtildiğinde dal açıklama metninin ilk paragrafı konunun konusu olarak kullanıldı. bir dizi yama için kapak mektubu.
  • "git application -3way" komutunun ve "merge.conflictStyle" ayarının birlikte kullanımına yönelik destek uygulandı ("git application", denemeden sonra çakışmayı çözmek gerektiğinde artık merge.conflictStyle'daki çakışma açıklama stilini hesaba katıyor) depoya bir yama dosyası uygulamak için).
  • "git diff/grep --show-function/-function-context" gibi işlemlerde kullanılan işlev tanımlama kodu, dil programlarında işlev sınırlarını tanımlamayı destekleyecek şekilde genişletildi Iksir.
  • "Git add", "git commit", "git reset" ve diğer komutlara - "-pathspec-from-file" adlı yeni bir seçenek eklendi; bu, bir dosyadan veya giriş akışından yolların listesini yüklemeyi mümkün kılar , bunları komut satırında listelemek yerine.
  • Taahhütleri yazarken dizin düzeyinde yeniden adlandırmaların tespit edilmesiyle ilgili sorun çözüldü. Bir alt dizinin içeriği havuzun köküne taşındığında tanım işe yaramadı.
  • Yeniden tasarlanan "git add -i" komutunun ilk uygulaması önerildi; bu, Perl'den C'ye yeniden yazılan değiştirilmiş içeriği etkileşimli olarak eklemenize olanak tanıyor. “git add -p” komutunun benzer bir yeniden çalışması devam ediyor.
  • “git log –graph” komutu, depodaki değişikliklerin geçmişini içeren bir grafiğin ASCII görüntüsünü oluşturacak şekilde yeniden düzenlendi. Yeniden çalışma, hikayenin yapısını bozmadan çıktıyı önemli ölçüde iyileştirmeyi ve basitleştirmeyi mümkün kıldı; bu, örneğin resmin terminal hattı genişliğinin ötesine uzanmasıyla ilgili sorunu çözdü.
  • "git log --format=.." seçeneği çıktı formatını değiştirmenizi sağlar,
    e-posta adresinin yalnızca "@" simgesinden önce belirtilen kısmını görüntülemek için "l/L" bayrakları desteğiyle genişletilmiştir (örneğin, tüm geliştiricilerin tüm e-postaları aynı alanda olduğunda kullanışlıdır).

  • “git submodule” komutuna “set-url” alt komutu eklendi.
  • Geçişe hazırlık amacıyla test kitleri güncellendi
    karma algoritması SHA-2 yerine SHA-1.

Kaynak: opennet.ru

Yorum ekle