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

tanıtıldı dağıtılmış bir kaynak kontrol sisteminin piyasaya sürülmesi Git 2.22.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ü karma işlemi kullanılır ve ayrıca 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, 745 geliştiricinin katılımıyla hazırlanan ve 74'i ilk kez geliştirmede yer alan 18 değişiklik içeriyordu. Ana yenilikler:

  • 1.18 sürümünden bu yana mevcut olan yeni taahhüt rebase modu "git rebase --rebase-merges", artık kullanımdan kaldırılan eski "--preserve-merges" seçeneğinin yerini alıyor. "Git rebase" işlemi, bir dizi taahhütü yeni bir temel taahhütle değiştirmek için kullanılır; örneğin, bazı yeni özellikler geliştiren ayrı bir şubeyi, şubeden sonra eklenen düzeltmeleri içeren ana dalın mevcut durumuna taşımak için kullanılır. :

    o - o - o (özelliğim)

    /

    o - o - o - o - o (ana)

    o - o - o (özelliğim)

    /

    o - o - o - o - o (ana)

    Taşınan bir daldaki şube yapısını korumak için, etkileşimli modda çalıştırıldığında (git rebase -i --preserve-merges) taahhüt geçmişinin düzenlenmesine izin veren "--preserve-merges" seçeneği daha önce kullanılabiliyordu, ancak depo yapısının tamamen korunmasını garanti etmedi. Yeni "--rebase-merges" modu, taşınan daldaki değişikliklerin yapısını korumanıza olanak tanırken, taahhütlerin silinmesi, yeniden gruplanması ve yeniden adlandırılması da dahil olmak üzere çok çeşitli etkileşimli işlemler sağlar.

    Örneğin, "--rebase-birleştirmeler" verir Taşınan şubedeki şube yapısını korurken taahhütleri ayrı bir şubeden daha yeni bir ana şubeye yeniden yükleyin ve taahhüt notlarında anında bazı değişiklikler yapın.

  • “git Branch new A...B” ve “git checkout -b new” yapılarını kullanarak diğer iki dalın (birleştirme tabanı, ortak bir ataya bağlanma) birleştirme tabanının belirlenmesi sonucuna dayalı olarak yeni bir dal oluşturma desteği eklendi "A...B", "git checkout A...B"nin HEAD'i temel işleme ve "diff A'ya kaydırmasına benzer şekilde, belirtilen iki taahhüt arasında bir birleştirme tabanı tanımlamayı içerir. ..B", "B" taahhüdü ile "A" taahhüdü "Ancestor" ile aynı olan arasındaki değişiklikleri gösterir.

    Örneğin, ayrı bir my-feature şubesi üzerinde çalışırken, farklı bir şubeden, örneğin my-feature şubesinin teslim alındığı ana daldaki aynı yerden başlamak istediğinizde bu özellik kullanılabilir. Daha önce, bu, değişiklik günlüğünün manuel olarak incelenmesini gerektiriyordu; bu, büyük bir değişiklik geçmişiniz varsa, ardından ana ve benim özelliğim dalları arasındaki birleştirme tabanının karmasını hesaplamak için "git merge-base master my-feature"ı çalıştırmak sakıncalıydı. ve ortak ata olan "git Branch my-other-feature hash"e göre yeni bir dal oluşturmak. Git 2.22'de, diğer iki dalın birleştirme tabanına göre bir dal oluşturmak için "git şubesi-diğer-özelliğim A...B" sözdizimini kullanabilirsiniz;

  • Ödeme işlemi sırasında elde edilen şubenin adını görüntülemek için "git şube --show-current" seçeneği eklendi;
  • Bir ödeme işlemi gerçekleştirilirken dir dizininin içeriğinin ana dalın durumuna tam olarak karşılık gelen bir forma getirilmesine olanak tanıyan "git checkout —no-overlay - dir" seçeneği eklendi. Örneğin, dir dizininin yerel kopyasında ana dalda olmayan bir dosya varsa, o zaman varsayılan olarak "git checkout master - dir" çalıştırılırken bırakılacaktır ve "--no-overlay" ise bırakılacaktır. ” seçeneği belirtilirse silinir;
  • "git diff" komutu, seçenekleri ayrıştırmak için evrensel bir API kullanır; bu, seçenek işlemeyi diğer git yardımcı programlarıyla birleştirmeyi mümkün kılar. Örneğin, "git diff"te artık tüm seçeneklerin kendi karşıtları var ("--function-context" ve "--no-function-context");
  • "Git log" çıktısındaki taahhütlere eklenen genişletilmiş etiketleri filtreleme yeteneği eklendi ("fragman" - İmzalayan ve Ortak Yazar gibi ek bilgi işaretleri). Etiketleri hem anahtara hem de değere göre filtrelemek mümkündür, örneğin:
    "git log --pretty = "%(trailers:key=Reviewed-by,valueonly)";

  • Daha esnek ve yapılandırılmış bir çıktı formatı sunan yeni bir izleme motoru Trace2 eklendi. Trace2, daha ayrıntılı analiz ve hata ayıklama için yürütülen işlemler ve performans verileri hakkında telemetri toplamanıza olanak tanır (işleyici kullanıcı tarafından atanır, harici olarak hiçbir veri gönderilmez);
  • "git bisect" raporu daha okunaklı hale getirildi; burada sorunlu kayıtlar artık daha net bir şekilde vurgulanıyor ve her dosya için değişikliklere ilişkin özet istatistikler görüntüleniyor (değişen satır sayısı düzeyinde);
  • Dizin yeniden adlandırmalarını belirlemeye yönelik buluşsal yöntemler, yeniden adlandırma etiketlerinin hatalı kurulumunu ortadan kaldırmak için yeniden düzenlendi. Şüpheye düştüğünüzde, bu tür dizinler artık çelişkili olarak işaretleniyor;
  • Başka bir etiketin üzerine etiket yüklemeye çalıştığınızda bir uyarı görüntülenir; bu genellikle yanlışlıkla yapılır ve etiketin yanlış commit'e ayarlanmasına yol açabilir (örneğin, “git tag -f -m “updated message” gibi bir yapı) my-tag1 my-tag2″ eski etiket üzerinde bir etiketin oluşturulmasıyla sonuçlanacaktır, oysa geliştirici yeni etiketin eski etiketin işaret ettiği işleme yüklenmesini bekliyordu);
  • Her bir işleme için mevcut nesne kümeleri hakkındaki verileri depolayan ve bir temel nesnenin varlığını hızlı bir şekilde belirlemenize olanak tanıyan bit eşlem depoları (disk tabanlı "erişilebilirlik bit eşlemleri" yapısı) için oluşturma etkinleştirilir. Bu yapı, veri alma işlemlerinin (git fetch) yürütme süresini önemli ölçüde azaltır.

Kaynak: opennet.ru

Yorum ekle