La distribuita fontkontrola sistemo Git 2.48 estis publikigita. Git estas tre produktiva kaj disponigas ne-liniajn evoluilojn bazitajn sur disbranĉigo kaj kunfandado. Por certigi la integrecon de la historio kaj reziston al retroaktivaj ŝanĝoj, implicita hashing de la tuta antaŭa historio en ĉiu kommit estas uzata, same kiel ciferecaj subskriboj de la programistoj de individuaj etikedoj kaj kommits. La Git-kodo estas distribuita sub la permesilo GPLv2+.
Kompare kun la antaŭa eldono, la nova versio enhavas 605 ŝanĝojn preparitajn kun la partopreno de 93 programistoj, el kiuj 35 partoprenas en evoluo por la unua fojo. Ĉefaj novigoj:
- Efektivigis la kapablon konstrui uzante la Meson-konstrusistemon, krom GNU Make kaj CMake. Por konstrui Git vi nun povas uzi la komandon "meson setup build && ninja -C build". Oni rimarkas, ke la Makefile uzata kiam oni uzas GNU Make kreskis al 3887 linioj kaj ne estas tiel simpla kiel ni ŝatus. La ilaro de Meson simpligas la konstrusistemon, estas oportuna por transplatformaj konstruoj, kaj igas konstruadon pli alirebla por komencantoj aŭ programistoj kiuj ne havas sperton kun la Make-utilo. Ne estas planoj ĉesigi subtenon por Make kaj CMake en antaŭvidebla estonteco.
- Aldonitaj konstruopcioj por permesi la uzon de alternativaj efektivigoj de la SHA-1 hash dum kalkulado de ĉeksumoj uzataj por kontroli la integrecon de datumblokoj en pakaj dosieroj. La agado de la kontrolsumo-kalkulo estas de granda graveco, ekzemple, proksimume 78% de la procesoro-tempo estas elspezita por ilia kalkulo dum klonado de deponejo kun la Linukso-kerno. La defaŭlta efektivigo inkluzivas kromajn koliziokontrolojn kaj protekton kontraŭ SHA-1-atakoj kiel SHAttered kaj Shambles. Tia protekto, kiu konsumas pliajn rimedojn, havas sencon nur kiam oni uzas SHA-1 por kriptografiaj celoj kaj estas senutila kiam oni kontrolas la integrecon de indeksaj datumoj.
Por konstrui Git kun pli rapida SHA-1-efektivigo, kiu ne taŭgas por kriptosistemoj, oni proponas serion de *_UNSAFE-opcioj, ekzemple "OPENSSL_SHA1_UNSAFE". En GitHub, konstrui kun simpligita SHA-1 permesis pliigon de 10-13% en la agado de operacioj de reakiro kaj klonado de datumoj.
- Aldonis la eblon uzi la opcion "-remerge-diff" en la komando "range-diff", kiu ebligas al vi montri la diferencojn inter la ĝenerala kunfanda rezulto kaj la realaj datumoj reflektitaj en la kommit post prilaborado de la "kunfanda" komando. Kiam oni uzas la opcion "--remerge-diff", la diferencoj inter konfliktsolvoj ne estas apartigitaj por ĉiu gepatra branĉo, sed la ĝeneralaj diferencoj inter la dosiero kiu havas kunfandi konfliktojn kaj la dosiero kiu havas la konfliktojn solvitaj estas montritaj. En la kunteksto de la komando range-diff, nova opcio povas esti utila por kompari arojn de kommits post kiam sekvenco de kommits estis migrita per la rebase komando kun la opcio --rebase-merges.
- Aldonis la kapablon prizorgi Git-testan suiteon kun memorfuko-detekto ebligita. Ĉar git disponigas utilecojn kiuj eliras post kiam la nomita funkcio efektivigas, memorfuĝoj ne estis antaŭe viditaj kiel granda problemo. La bezono tute forigi memorajn likojn iĝis urĝa post kiam oni komencis labori pri translokado de internaj funkcioj al aparta biblioteko, kiu povas esti uzata en longdaŭraj procezoj.
- Listo de malnoviĝintaj reĝimoj kaj funkcioj kiuj estas planitaj esti nuligitaj en la estonteco komencis esti kompilita. Estas atendite, ke malrekomendita funkcieco estos forigita en la eldono de Git 3.0, kiu inkluzivos ŝanĝojn, kiuj rompas malantaŭan kongruon.
- Daŭra optimumigo de la komando "git for-each-ref", kiu montras liston de ligiloj en la deponejo. Optimumigo, kiu kombinas pritraktilojn por ligfiltrado kaj eligoformatado nun validas ne nur por neordigita eligo, sed ankaŭ kiam la "--sort" opcio estas specifita.
- Plibonigita efektivigo de la "reftable" backend kun bloka stokado por efike stoki branĉojn kaj etikedreferencojn en la deponejo. Reftable permesas signife akceli serĉadon, legadon kaj skribadon en deponejoj kun tre granda nombro da ligiloj. La nova versio ĉesas voki kelkajn helpajn APIojn por plue ekskludi la libgit-bibliotekon de esti konstrua dependeco. Efektivigita adapta traktado de eraroj resenditaj de memorasignofunkcioj (nesufiĉa memoro ne plu kondukas al kraŝoj). Operacioj de kreado de ligoj estis akcelitaj kaj konsumo de memoro reduktiĝis.
- La parta klonado-efektivigo solvis problemojn, kiuj kaŭzis deponan buklon kaj korupton post rulado de la komando "git gc".
- Dum ekzekuto de la komando "git fetch " se ne estas "refs/remotes/" en la loka sistemo /HEAD" kaj la ĉeesto sur la alia flanko de la branĉo al kiu HEAD rilatas, "refs/remotes/ /HEAD" nun alidirektas al ĉi tiu fadeno. Por kontroli sinkronigon "refs/remotes/ /HEAD" kun la valoro HEAD ĉe la alia flanko de la konekto, la fora agordo estis aldonita. .sekvuRemoteHEAD".
- Aldonita agordo "fora. .serverOption" simila al la komandlinia opcio "-serverOption= "
- La komando "git rebase --rebase-merges" certigas, ke branĉonomoj estas uzataj kiel etikedoj kiam ajn eblas.
- Aldonis flagon '-e' al la komandoj 'git notes add' kaj 'git notes append', kiuj malfermas la noton en ekstera tekstredaktilo specifita per la mediovariablo GIT_EDITOR.
- Plibonigita kongruo kun GCC 15 kaj la C23-normo.
- Subteno por pli malnovaj versioj de libcURL kaj Perl estis nuligita.
fonto: opennet.ru
