Izdanje distribuiranog sistema izvorne kontrole Git 2.25

Dostupno oslobađanje distribuiranog sistema kontrole izvora git 2.25.0. Git je jedan od najpopularnijih, najpouzdanijih i najučinkovitijih sistema kontrole verzija, koji pruža fleksibilne nelinearne razvojne alate zasnovane na grananju i spajanju. Da bi se osigurao integritet istorije i otpornost na retroaktivne promene, koristi se implicitno heširanje celokupne prethodne istorije u svakom urezivanju, a moguće je i sertifikovati pojedinačne oznake i urezivanja digitalnim potpisima programera.

U odnosu na prethodno izdanje, u novu verziju, pripremljenu uz učešće 583 programera, prihvaćeno je 84 izmjena, od kojih je 32 prvi put učestvovalo u razvoju. Glavni inovacije:

  • Mogućnost djelomičnog kloniranja približava se stabilizaciji i potpunoj spremnosti, omogućavajući vam prijenos samo dijela podataka i rad s nekompletnom kopijom spremišta. Tipičan klon kopira sve podatke iz spremišta, uključujući svaku verziju svakog fajla u istoriji promena. Za vrlo velika spremišta, kopiranje podataka rezultira značajnim povećanjem prometa i prostora na disku, čak i ako je programer zainteresiran samo za podskup datoteka. Da bi se olakšalo dohvaćanje samo dijela radnog stabla izvora, novo izdanje uvodi eksperimentalnu naredbu "sparse-checkout" i novu opciju "--sparse" za naredbu "klon".

    Prethodno se kroz zadatak obavljao proces selektivnog kloniranja filteri da filtrirate nepotreban sadržaj i opciju „—bez odjave“ da onemogućite popunjavanje datoteka koje nedostaju. Nakon toga, prije izvođenja operacije preuzimanja, bilo je potrebno omogućiti postavku core.sparseCheckout i definirati listu isključenih obrazaca putanja u datoteci .git/info/sparse-checkout. Na primjer, da biste klonirali bez blob-ova i spriječili da se datoteke izvuku iz poddirektorija dubine 2 ili više, možete pokrenuti:

    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 .

    Nova naredba “git sparse-checkout” uvelike pojednostavljuje rad i svodi proces organiziranja rada s nekompletnim spremištem na sljedeće naredbe:

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

    Komanda sparse-checkout vam omogućava da postavite listu staza za odjavu (set) bez ručnog konfigurisanja .git/info/sparse-checkout, kao i da prikažete trenutnu listu staza (listu) i omogućite ili onemogućite delimične odjave (omogućite /onemogući).

    Da biste optimizirali rad s vrlo velikim spremištima i listama šablona, ​​"git config core.sparseCheckoutCone", koji ograničava dozvoljene obrasce (umjesto proizvoljnih .gitignore obrazaca, možete odrediti da li sve putanje i sve datoteke u datom poddirektorijumu treba da budu odjavljene). Na primjer, ako veliko spremište ima direktorij “A/B/C” i sav posao je koncentrisan u poddirektoriju “C”, onda kada omogućite režim sparseCheckoutCone, naredba “git sparse-checkout set A/B/ C” će izdvojiti cijeli sadržaj “C”, ali će iz “A” i “B” izdvojiti samo dijelove potrebne za rad sa “C”.

  • Iz dokumentacije ("git rebase -h"), sve reference na opciju "--preserve-merges" su uklonjene, koja je zastarjela i treba je koristiti umjesto toga za migraciju skupa urezivanja.git rebase --rebase-merges".
  • Da bi se poboljšala čitljivost poruka sa zakrpama koje se šalju na mailing liste, dodana je opcija “git format-patch —cover-from-description subject”, kada je navedeno, prvi pasus iz teksta opisa grane koristi se kao predmet propratno pismo za set flastera.
  • Implementirana podrška za kombinovanu upotrebu naredbe “git apply -3way” i postavke “merge.conflictStyle” (“git apply” sada uzima u obzir stil opisa konflikta iz merge.conflictStyle kada je potrebno riješiti konflikt nakon pokušaja da primenite datoteku zakrpe na spremište).
  • Kod definicije funkcije koji se koristi u operacijama kao što je "git diff/grep --show-function/-function-context" proširen je da podrži definiranje granica funkcija u jezičkim programima eliksir.
  • Dodata je nova opcija za "git add", "git commit", "git reset" i druge naredbe - "-pathspec-from-file", što omogućava učitavanje liste staza iz datoteke ili ulaznog toka , umjesto da ih navedete na komandnoj liniji.
  • Problem s otkrivanjem preimenovanja na razini direktorija prilikom pisanja urezivanja je riješen. Definicija nije radila ako je sadržaj poddirektorija premješten u korijen spremišta.
  • Predložena je početna implementacija redizajnirane naredbe “git add -i”, koja vam omogućava da interaktivno dodajete promijenjeni sadržaj, prepisan sa Perl-a na C. Slična prerada komande “git add -p” je u toku.
  • Komanda “git log –graph” je refaktorisana, generišući ASCII sliku grafa sa istorijom promena u spremištu. Prerada je omogućila značajno poboljšanje i pojednostavljenje izlaza bez narušavanja strukture priče, što je, na primjer, riješilo problem sa slikom koja se proteže izvan širine terminalne linije.
  • Opcija "git log --format=.." vam omogućava da promijenite izlazni format,
    prošireno podrškom za “l/L” zastavice za prikaz samo dijela adrese e-pošte naznačene prije simbola “@” (na primjer, korisno kada svi programeri imaju sve e-poruke na istom domenu).

  • Dodata podkomanda “set-url” u komandu “git submodule”.
  • Kompleti za testiranje su ažurirani u pripremi za prelazak na
    algoritam heširanja SHA-2 umjesto SHA-1.

izvor: opennet.ru

Dodajte komentar