Lëshimi i sistemit të shpërndarë për menaxhimin e kodit burimor Git 2.25

I disponueshëm lëshimi i sistemit të distribuar të menaxhimit të kodit burimor Git 2.25.0. Git është një nga sistemet më të njohura, të besueshme dhe me performancë të lartë për menaxhimin e versioneve, që ofron mjete fleksibile për zhvillimin jolinear, të bazuara në degëzimin dhe bashkimin e degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve "mbrapa në kohë" përdoret hashingu implicit i gjithë historisë së mëparshme në çdo commit, gjithashtu është e mundur vërtetimi me nënshkrime digjitale të etiketave dhe komiteve të veçanta.

Në krahasim me lëshimin e kaluar, në versionin e ri janë pranuar 583 ndryshime, të përgatitura me pjesëmarrjen e 84 zhvilluesve, prej të cilëve 32 kanë marrë pjesë për herë të parë në zhvillim. Main innovations:

  • Po afron stabilizimi dhe gatishmëria e plotë e funksionalitetit të klonimit të pjesshëm (partial clones), që lejon transferimin e vetëm një pjese të të dhënave dhe punimin me një kopje të pjesshme të depozitës. Gjatë klonimit të zakonshëm nga depozita kopjohen të gjitha të dhënat, duke përfshirë çdo version të çdo skedari nga historia e ndryshimeve. Për depozita shumë të mëdha, kopjimi i të dhënave çon në një rritje të konsiderueshme të trafikimit dhe hapësirës në disk, madje edhe nëse zhvilluesi është i interesuar vetëm për një nëngrup të skedarëve. Për të thjeshtuar marrjen e vetëm një pjese të pemës së punës me kodin burimor, në lëshimin e ri është propozuar një komandë eksperimentale "sparse-checkout" dhe një opsion i ri "—sparse" për komandën "clone".

    Më parë, procesi i klonimit të zgjedhur bëhej përmes caktimit filtrave për të përjashtuar përmbajtjen e tepërt dhe opsionit "—no-checkout" për të çaktivizuar mbushjen e skedarëve që mungojnë. Pas kësaj, para se të kryhej operacioni checkout, ishte e nevojshme të aktivizohej cilësimi core.sparseCheckout dhe të përcaktohej në skedarin .git/info/sparse-checkout lista e shablloneve të rrugëve përjashtuese. Për shembull, për të klonuar pa blob dhe për të ndaluar nxjerrjen e skedarëve nga katalogët e brendshëm me thellësi 2 dhe më shumë, mund të ishte ekzekutuar:

    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 .

    Komanda e re "git sparse-checkout" e thjeshtëson në masë të madhe punën dhe e redukton procesin e organizimit të punës me një depo të pjesshme në komandat:

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

    Ekipi sparse-checkout mundëson vendosjen e një liste rrugësh për checkout (set) pa konfiguruar manualisht .git/info/sparse-checkout, si dhe shfaqjen e listës aktuale të rrugëve (list) dhe aktivizimin ose çaktivizimin e checkout-ve të pjesshëm (enable/disable).

    Për optimizimin e punës me depozitë shumë të mëdha dhe lista shabllonesh, është propozuar konfigurimi "git config core.sparseCheckoutCone" që kufizon modellet e lejuara (në vend të modeleve të rastësishme .gitignore, mund të përcaktohen të gjitha rrugët dhe të gjithë skedarët në një nënkatalog të caktuar që duhen nxjerrë). Për shembull, nëse në një depo të madhe ka një katalog "A/B/C" dhe gjithë puna është përqendruar në nënkatalogun "C", kur aktivizohet mënyra sparseCheckoutCone, komanda "git sparse-checkout set A/B/C" do të nxjerrë plotësisht përmbajtjen e "C", por nga "A" dhe "B" do të nxjerrë vetëm pjesët e nevojshme për punën me "C".

  • Nga dokumentacioni ("git rebase -h"), janë hequr të gjitha përmendjet e opsionit "—preserve-merges", i cili shpallet i vjetruar dhe në vend të tij, për të transferuar një grup komitësh duhet të përdoret "git rebase —rebase-merges«.
  • Për të përmirësuar lexueshmërinë e mesazheve me patches, që dërgohen në listat e shpërndarjes, është shtuar opsioni "git format-patch —cover-from-description subject", kur përcaktohet i cili tema e letrës shoqëruese për grupin e patches përdor paragrafin e parë nga teksti përshkrues i degës.
  • Është zbatuar mbështetje për përdorimin e përbashkët të komandës "git apply —3way" dhe konfigurimit "merge.conflictStyle" ("git apply" tani merr parasysh stilin e përshkrimit të konfliktit nga merge.conflictStyle kur është e nevojshme të zgjidhet konflikti pas një përpjekje për të aplikuar një skedar me patch në depo.
  • Kodi që përcakton funksionet, i përdorur në operacione si "git diff/grep —show-function/—function-context", është zgjeruar me mbështetje për përcaktimin e kufijve të funksioneve në programe në gjuhën Elixir.
  • Në "git add", "git commit", "git reset" dhe komandat e tjera është shtuar një opsion i ri "—pathspec-from-file", i cili jep mundësinë për të ngarkuar një listë rrugësh nga një skedar ose nga një burim, në vend që t'i listoni ato në komandën e linjës.
  • Është zgjidhur një problem me përcaktimin e rinovimeve në nivel katalogu gjatë regjistrimit të komitëve. Përcaktimi nuk punonte në rastin e zhvendosjes së përmbajtjes së një nënkatalogu në rrënjën e depozitës.
  • Është propozuar një implementim fillestar i rinovuar komandës "git add -i", i cili lejon shtimin e përmbajtjes së ndryshuar në mënyrë interaktive, i ri-shkruar nga Perl në C. Një rinovim i ngjashëm i komandës "git add -p" është në proces.
  • Eshte realizuar refaktorizimi i komandës «git log —graph», e cila formon një imazh ASCII të grafit me historinë e ndryshimeve në depo. Rikonstruimi ka lejuar përmirësimin dhe thjeshtësimin e daljes pa deformuar strukturën e historisë, çka, për shembull, zgjidh një problem me daljen e pamjes jashtë gjerësisë së rreshtit të terminalit.
  • Opsioni «git log —format=..», i cili lejon ndryshimin e formatit të daljes,
    është zgjeruar me mbështetje për flagjet «l/L» për të shkruar vetëm një pjesë të adresës së emailit, që tregon para simbolit «@» (për shembull, është e dobishme kur të gjithë zhvilluesit kanë të gjitha emailat në një domain të vetëm).
  • Në komandën «git submodule» është shtuar nënkomanda «set-url».
  • Grupet testuese janë përditësuar në kuadër të përgatitjes për kalimin në
    algoritmin e hash SHA-2 në vend të SHA-1.

Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster