Yo te anonse liberasyon sistèm kontwòl sous distribiye Git 2.37. Git se youn nan sistèm kontwòl vèsyon ki pi popilè, serye ak pèfòmans segondè, ki bay zouti devlopman fleksib ki pa lineyè ki baze sou branch ak fizyon. Pou asire entegrite nan istwa ak rezistans nan chanjman retwoaktif, yo itilize hashing implicite nan tout istwa anvan an nan chak komèt li posib tou pou sètifye tags endividyèl ak komèt ak siyati dijital devlopè yo.
Konpare ak lage anvan an, 395 chanjman yo te adopte nan nouvo vèsyon an, prepare ak patisipasyon nan 75 devlopè, nan ki 20 te patisipe nan devlopman pou premye fwa. Prensipal inovasyon:
- Mekanis nan endèks pasyèl (sparse endèks), ki kouvri sèlman yon pati nan depo a, yo te pote pare pou itilize toupatou. Endis pasyèl yo ka amelyore pèfòmans ak ekonomize espas nan repozitwa ki fè operasyon klonaj pasyèl (sparse-checkout) oswa travay ak yon kopi enkonplè nan depo a. Nouvo lage a konplete entegrasyon endis pasyèl yo nan git show, git sparse-checkout, ak kòmandman git stash. Benefis pèfòmans ki pi aparan lè w sèvi ak endèks pasyèl yo wè ak lòd git stash, ki te wè yon ogmantasyon 80% nan vitès ekzekisyon nan kèk sitiyasyon.
- Yo te aplike yon nouvo mekanis "cruft pack" pou anbalaj objè inaccessible ki pa referans nan depo a (ki pa referans pa branch oswa tag). Pèseptè fatra a efase objè ki pa ka jwenn yo, men rete nan depo a pou yon sèten tan anvan yo efase pou evite kondisyon ras yo. Pou swiv peryòd la nan ensidan objè inaccessible, li nesesè yo tache tag yo ak tan an nan chanjman nan objè menm jan an, ki pa pèmèt estoke yo nan yon sèl fichye pake nan ki tout objè yo gen yon tan chanjman komen. Précédemment, sove chak objè nan yon dosye separe te mennen nan pwoblèm lè te gen yon gwo kantite objè fre, inaccessible ki pa t 'ankò elijib pou efase. Mekanis "cruft pack" yo pwopoze a pèmèt ou estoke tout objè ki pa ka jwenn yo nan yon sèl fichye pake, epi reflete done sou tan modifikasyon chak objè nan yon tab separe ki estoke nan yon dosye ki gen ekstansyon ".mtimes".
- Pou Windows ak macOS, gen yon mekanis entegre pou swiv chanjman nan sistèm fichye a, ki pèmèt ou evite iterasyon sou tout anyè k ap travay la lè w ap fè operasyon tankou "git status". Précédemment, pou swiv chanjman yo, sèvis piblik ekstèn pou swiv chanjman nan FS a, tankou Watchman, te kapab konekte atravè kwòk, men sa te mande enstalasyon an nan pwogram adisyonèl ak konfigirasyon. Koulye a, fonksyonalite a espesifye bati-an epi yo ka aktive ak lòd la "git config core.fsmonitor true".
- Nan lòd "git sparse-checkout" la, sipò pou yon altènativ a mòd "-kòn" la, metòd pou defini modèl pou klonaj pasyèl, yo te deklare demode, ki pèmèt, lè detèmine pati nan depo a ki sijè a. operasyon an klonaj, nan lis fichye endividyèl lè l sèvi avèk ".gitignore" sentaks la, ki pa pèmèt itilize pou optimize endèks pasyèl.
- Ogmantasyon fleksibilite nan konfigirasyon apèl fsync() pou koule chanjman nan disk. Sipò pou estrateji senkronizasyon "pakèt" la te ajoute nan paramèt "core.fsyncMethod", ki pèmèt akselere travay lè w ap ekri yon gwo kantite dosye endividyèl pa akimile chanjman nan kachèt writeback, ki se reset pa yon sèl fsync() rele. Tès la, ki te lakòz 500 fichye yo te ajoute lè l sèvi avèk "git add" kòmandman an, te konplete nan 0.15 segonn lè nouvo mòd la te aktive, pandan y ap rele fsync() te pran 1.88 segonn pou chak fichye, epi san yo pa itilize fsync - 0.06 segonn .
- Kòmandman Branch traversal tankou "git log" ak "git rev-list" kounye a gen yon opsyon "-since-as-filter = X" ki pèmèt ou filtre enfòmasyon sou komite ki pi gran pase "X". Kontrèman ak opsyon "-since", nouvo lòd la aplike kòm yon filtè ki pa sispann rechèch la apre premye komèt ki pi gran pase tan espesifye a.
- Nan lòd "git remote", lè w ap presize drapo "-v", enfòmasyon sou klon pasyèl nan depo a parèt.
- Te ajoute "transfer.credentialsInUrl" anviwònman, ki ka pran valè yo "avèti", "mouri" ak "pèmèt". Si yo espesifye nan paramèt la "remote. .url" kalifikasyon tèks klè, eseye fè yon operasyon "chache" oswa "pouse" pral echwe ak yon erè si "transfer.credentialsInUrl" anviwònman yo mete nan "mouri", oswa yon avètisman si yo mete nan "avèti".
- Pa default, nouvo aplikasyon mòd entèaktif kòmandman an "git add -i", reekri soti nan Perl nan C, pèmèt.
Sous: opennet.ru
