Git 2.25 versiyasında paylanmış məntiqi idarəetmə sisteminin buraxılışı

Mövcuddur paylaşılan mətn idarəetmə sisteminin buraxılışı Git 2.25.0. Git, ən populyar, etibarlı və yüksək performanslı versiya idarəetmə sistemlərindən biridir. O, filiallar arasında dallanma və birləşmə əsasında qeyri-xətti inkişaf üçün çevik vasitələr təqdim edir. Tarixə qarşı bütövlük və geri dəyişikliklərə qarşı dayanıqlılıq təmin etmək üçün, hər bir commitdə bütün əvvəlki tarixlərin qeyri-rəsmi hashinqi istifadə olunur. Həmçinin, ayrı-ayrı tag və commitlərin rəqəmsal imzaları ilə təsdiqlənməsi mümkündür.

Keçən versiya ilə müqayisədə, yeni versiyada 84 inkişafçının iştirakı ilə hazırlanmış 583 dəyişiklik qəbul edilib ki, bunlardan 32-si ilk dəfədir ki, inkişafda iştirak edir. Əsas yeni xüsusiyyətlər:

  • Tamamilə stabilizasiya və tam hazır vəziyyətə yaxınlaşan qismən klonlama imkanı (partial clones) təqdim olunur ki, bu da yalnız məlumatların bir hissəsini köçürməyə və repositarının tam olmayan nüsxəsi ilə işləməyə imkan tanıyır. Adi klonlama zamanı repositaridan bütün məlumatlar, yəni dəyişikliklər tarixindəki hər bir faylın hər bir versiyası köçürülür. Çox böyük repositarilər üçün, məlumatların köçürülməsi trafik və disk sahəsinin əhəmiyyətli dərəcədə artırılmasına səbəb olur, hətta inkişafçının yalnız müəyyən fayllar toplusu ilə maraqlansa da. Yeni buraxılışda

    Klassik klonlama prosesi əvvəlcə filter artıq lazımsız kontenti ayırmaq üçün verilməsi mümkün olan seçimlər vasitəsilə aparılırdı və '—no-checkout' seçimi sonradan itkin faylların bərpasını dayandırırdı. Bunun ardından, checkout əməliyyatından əvvəl core.sparseCheckout konfiqurasiyasını aktiv etmək və .git/information/sparse-checkout faylında istisna edilən yolların nümunələrini müəyyən etmək lazım idi. Məsələn, bloblardan azad olan klonlama üçün, 2 və daha dərin nested kataloqlardan faylların çıxarılmasına qadağa qoymaqla aşağıdakı əmri yerinə yetirmək mümkündür:

    git clone —filter=blob:none —no-checkout /your/repository/here repo
    $ cd repo
    $ cat >.git/info/sparse-checkout <EOF
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git checkout .

    Yeni 'git sparse-checkout' komandası əməliyyatı əhəmiyyətli dərəcədə asanlaşdırır və qismən repositari ilə iş visanının təşkilini aşağıdakı əmr kəmərləri ilə edir:

    git clone —filter=blob:none —sparse /your/repository/here repo
    git sparse-checkout set /path/to/check/out

    Sparsely_checkout komandası, .git/info/sparse-checkout faylını əl ilə düzəltmədən checkout (set) üçün yolların siyahısını təyin etməyə, həmçinin mövcud yolları (list) göstərməyə və qismən checkout-u (enable/disable) aktiv etməyə ya da deaktiv etməyə imkan verir.

    Çox böyük repositarilər və nümunə listləri ilə iş üçün optimallaşdırma məqsədilə 'git config core.sparseCheckoutCone«, enerji şablonlarını sınırlayan (rasgele .gitignore şablonları yerine belirli bir alt dizinde hangi yolların ve dosyaların çıkarılacağı belirlenebilir). Örneğin, büyük bir depoda "A/B/C" dizini varsa ve tüm çalışma "C" alt dizininde yoğunlaşmışsa, sparseCheckoutCone modunu etkinleştirerek "git sparse-checkout set A/B/C" komutu "C" içeriğini tamamen çıkarır, ancak "A" ve "B" dizinlerinden sadece "C" ile çalışmak için gerekli kısımları çıkarır.

  • Belgelerden («git rebase -h») "—preserve-merges" seçeneğine yapılan tüm atıflar kaldırılmıştır, bu seçenek artık kullanımdan kaldırılmıştır ve onun yerine hızlı bir şekilde bir dizi commit taşımak için "git rebase —rebase-merges«.
  • Patch listelerine gönderilen mesajların okunabilirliğini artırmak için, "git format-patch —cover-from-description subject" seçeneği eklenmiştir; bu seçeneği belirttiğinizde, patch setinin eşlik eden mesajının konusu, dalın açıklama metnindeki ilk paragraf olarak kullanılır.
  • git apply —3way komutunun, "merge.conflictStyle" ayarıyla ("git apply" artık gerekirse bir patch dosyasını uygularken conflict çözme tarzını merge.conflictStyle'dan dikkate alır) birlikte kullanılmasını destekleme eklenmiştir.
  • Function tanımlama kodu, "git diff/grep —show-function/—function-context" gibi işlemlerde, işlevlerin sınırlarını tanımlama desteği ile genişletilmiştir. Elixir.
  • "git add", "git commit", "git reset" ve diğer komutlara, komut satırında sıralamak yerine bir dosyadan veya giriş akışından yol listesini yüklemeyi sağlayan yeni bir "—pathspec-from-file" seçeneği eklenmiştir.
  • Commit yazarken dizin seviyesinde yeniden adlandırmaları tanımlama problemi çözüldü. Tanımlama, bir alt dizinin içeriğinin depo köküne taşınması durumunda çalışmıyordu.
  • Perl'den C'ye yeniden yazılmış interaktif modda değiştirilmiş içeriği eklemek için düzenlenmiş "git add -i" komutunun ilk taslağı önerilmiştir. "git add -p" komutunun benzer bir yeniden yazımı sürdürülmektedir.
  • "git log —graph" komutuna yeniden yapılandırma yapıldı ve depo değişiklik tarihi ile ASCII grafiği oluşturmaktadır. Yeniden yapılandırmak, tarihi yapıya bozulma olmadan çıkarmak için çıktıyı önemli ölçüde geliştirmeyi ve basitleştirmeyi sağladı, örneğin bu, grafiğin terminal satırı genişliğinden taşması sorununu çözmüştür.
  • "git log —format=.." seçeneği, çıktının formatını değiştirme yeteneği sağlar,
    email adresinin "@" sembolünden önceki kısmını yalnızca gösterecek şekilde "l/L" bayrakları desteği ile genişletilmiştir (örneğin, tüm geliştiricilerin aynı alanda tüm email adresleri olduğunda faydalıdır).
  • "git submodule" komutuna "set-url" alt komutu eklenmiştir.
  • Test setleri,
    SHA-1 yerine SHA-2 hash algoritmasına geçiş hazırlıkları çerçevesinde güncellenmiştir.

Mənbə: opennet.ru

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster