udgivelse af et distribueret system til administration af kildekoder . Git er et af de mest populÊre, pÄlidelige og hÞjtydende versionsstyringssystemer, der tilbyder fleksible vÊrktÞjer til ikke-lineÊr udvikling baseret pÄ forgrening og sammenlÊgning af grene. For at sikre integriteten af historikken og modstandsdygtighed mod 'tilbageskuende' Êndringer anvendes implicit hashing af hele den tidligere historie i hver commit; det er ogsÄ muligt at verificere med digitale signaturer fra udviklerne af individuelle tags og commits.
Sammenlignet med den tidligere version er der i den nye version foretaget 504 ĂŠndringer med deltagelse af 64 udviklere, hvoraf 12 deltager for fĂžrste gang i udviklingen. :
- Overgangen til af kommunikationsprotokollen Git, som anvendes ved fjernforbindelse af klienten til Git-serveren, er gennemfÞrt som standard. Den anden version af protokollen er bemÊrkelsesvÊrdig ved at muliggÞre filtrering af grene og tags pÄ serversiden, hvilket giver klienten en forkortet liste over links. Tidligere blev hele listen over links i hele repository sendt til klienten ved udfÞrelse af enhver hentningskommando, selv nÄr klienten kun opdaterede en enkelt gren eller kontrollerede, om deres kopi af repository var opdateret. En anden bemÊrkelsesvÊrdig nyhed er muligheden for at tilfÞje nye funktioner til protokollen, efterhÄnden som ny funktionalitet bliver tilgÊngelig i vÊrktÞjet. Klientkoden forbliver kompatibel med den gamle protokol og kan fortsÊtte med at arbejde med bÄde nye og gamle servere, idet den automatisk falder tilbage til den fÞrste version, hvis serveren ikke understÞtter den anden.
- Kommandoen âgit configâ har fĂ„et tilfĂžjet muligheden ââshow-scopeâ, der gĂžr det lettere at identificere, hvor visse indstillinger er defineret. Git tillader indstillinger at blive defineret pĂ„ forskellige steder: i repository (.git/info/config), i brugerkataloget (~/.gitconfig), i den globale konfigurationsfil (/etc/gitconfig), samt via kommandolinjeindstillinger og miljĂžvariabler. NĂ„r man udfĂžrer âgit configâ, er det ret vanskeligt at forstĂ„, hvor den Ăžnskede indstilling faktisk er defineret. For at lĂžse dette problem var muligheden ââshow-originâ tilgĂŠngelig, men den viser kun stien til den fil, hvor indstillingen er defineret, hvilket er nyttigt, nĂ„r man Ăžnsker at redigere filen, men ikke hjĂŠlper, hvis man Ăžnsker at ĂŠndre vĂŠrdien via âgit configâ med indstillingerne ââsystemâ, ââglobalâ eller ââlocalâ. Den nye mulighed ââshow-scopeâ viser konteksten for definitioner af variable og kan anvendes sammen med âshow-origin:
$ git âlist âshow-scope âshow-origin
global file:/home/user/.gitconfig diff.interhunkcontext=1
global file:/home/user/.gitconfig push.default=current
[âŠ]
local file:.git/config branch.master.remote=origin
local file:.git/config branch.master.merge=refs/heads/master$ git config âshow-scope âget-regexp âdiff.*â
global diff.statgraphwidth 35
local diff.colormoved plain$ git config âglobal âunset diff.statgraphwidth
- I bindingsindstillingerne Brug af masker i URL er tilladt. Enhver HTTP-indstilling og legitimationsoplysninger i Git kan indstilles bÄde for alle forbindelser (http.extraHeader, credential.helper) og for forbindelser knyttet til URL (credential.https://example.com.helper, credential.https://example.com.helper). Indtil nu har brug af masker som *.example.com kun vÊret tilladt for HTTP-indstillinger, men ikke understÞttet for binding af legitimationsoplysninger. I Git 2.26 er disse forskelle blevet fjernet, og for eksempel kan brugernavnet nu knyttes til alle underdomÊner ved at angive:
[credential «https://*.example.com»]
brugernavn = ttaylorr
- Eksperimentel stÞtte til delvis kloning (partial clones) er blevet udvidet, hvilket gÞr det muligt kun at overfÞre en del af dataene og arbejde med en ufuldstÊndig kopi af et repository. Den nye version har tilfÞjet en ny kommando «git sparse-checkout add», som giver mulighed for at tilfÞje individuelle mapper til anvendelse af «checkout»-operationen kun til en del af arbejdsomrÄdet, i stedet for at opregne alle sÄdanne mapper pÄ én gang via kommandoen «git sparse-checkout set» (man kan tilfÞje én mappe ad gangen uden at skulle angive hele listen hver gang).
For eksempel, for at klone repository git/git uden at overfĂžre blobs, begrĂŠnse kontrol til kun rodmappen i arbejdsbogen, og sĂŠrskilt markere udtrĂŠk af mapperne «t» og «Documentation», kan man angive:$ git clone âfilter=blob:none âsparse git@github.com:git/git.git
$ cd git
$ git sparse-checkout init âcone$ git sparse-checkout add t
âŠ.
$ git sparse-checkout add Documentation
âŠ.
$ git sparse-checkout list
Documentation
t - Ydelsen af kommandoen «git grep», der anvendes til at sĂžge i bĂ„de aktuelt indhold af repository og historiske revisioner, er betydeligt forbedret. For at fremskynde sĂžgningen var det muligt at scanne indholdet af arbejdsomrĂ„det med flere trĂ„de («git grep âthreads»), men sĂžgning i historiske revisioner var en-trĂ„det. Nu er denne begrĂŠnsning fjernet ved implementeringen af muligheden for at parallelisere lĂŠseoperationer fra objektlageret. Som standard sĂŠttes antallet af trĂ„de til antallet af CPU-kerner, hvilket i de fleste tilfĂŠlde nu ikke krĂŠver en eksplicit angivelse af «âthreads».
- UnderstÞttelse af automatisk udfyldning af indtastning af underkommandoer, stier, links og andre argumenter for kommandoen «git worktree», der gÞr det muligt at arbejde med flere arbejdsbegreber af et repository, er blevet tilfÞjet.
- Der er tilfĂžjet stĂžtte til klare farver, som har ANSI escape-sekvenser. For eksempel kan i indstillingerne for farvefremhĂŠvning "git config âcolor" eller "git diff âcolor-moved" via indstillingen "âformat" for lyseblĂ„ angives "%C(brightblue)".
- En ny version af scriptet er blevet tilfÞjet. , der muliggÞr integration med mekanismen for at fremskynde overvÄgning af Êndringer i filer og oprettelsen af nye filer. Efter opdateringen krÊves det, at git hook i depotet.
- Optimeringer er blevet tilfĂžjet for at fremskynde operationer med delvise kloner (partial clones), relateret til brugen af bitmaps
(bitmap machinery) for at undgĂ„ fuld gennemgang af alle objekter under filtrering af output. Kontrollen af blobs (âfilter=blob:none og âfilter=blob:limit=n) ved delvise kloner foregĂ„r nu
markant hurtigere. GitHub har annonceret anvendelsen af patches med disse optimeringer og eksperimentel stĂžtte til delvise kloner. - Commandot âgit rebaseâ er blevet overfĂžrt til en anden backend, der som standard bruger 'merge'-mekanismen (tidligere anvendt til ârebase -iâ) i stedet for âpatch+applyâ. I nogle detaljer adskiller backends sig; for eksempel efter fortsĂŠttelse af operationen efter lĂžsning af konflikt (git rebase âcontinue) tilbyder den nye backend at redigere commit-beskeden, mens den gamle blot anvendte den tidligere besked. For at genoprette den gamle adfĂŠrd kan du bruge indstillingen ââapplyâ eller indstille konfigurationsvariablen ârebase.backendâ til âapplyâ.
- Et eksempel pÄ en autentificeringsparameterbehandler defineret gennem .netrc er blevet omformet til en form, der er klar til brug.
- Indstillingen gpg.minTrustLevel er blevet tilfĂžjet for at angive det minimale tillidsniveau for forskellige elementer, der udfĂžrer kontrol af digitale signaturer.
- I âgit rmâ og âgit stashâ er der tilfĂžjet en mulighed for ââpathspec-from-fileâ.
- Der er fortsat forbedringer af testsĂŠt i forbindelse med overgangen til hash-algoritmen SHA-2 i stedet for SHA-1.
Kilde: opennet.ru
