Git 2.39 lage kontwòl sous

Apre de mwa nan devlopman, sistèm kontwòl sous distribiye Git 2.39 te lage. 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 istwa a ak rezistans nan chanjman retwoaktif, yo itilize hashing implicite nan tout istwa anvan an nan chak komèt; li posib tou pou sètifye tag endividyèl ak komèt ak siyati dijital devlopè yo.

Konpare ak lage anvan an, nouvo vèsyon an enkli 483 chanjman, prepare avèk patisipasyon 86 devlopè, nan ki 31 te patisipe nan devlopman pou premye fwa. Prensipal inovasyon:

  • Kòmandman "git shortlog" la, ki fèt pou montre rezime ak estatistik ki soti nan istwa chanjman yo, te ajoute yon opsyon "-gwoup" pou gwoupman abitrè komite pa domèn pa limite a otè oswa komitè. Pou egzanp, pou montre yon lis devlopè ki gen enfòmasyon sou kantite chanjman, pran an kont moun k ap ede yo mansyone nan jaden an "Co-authored-by", ou ta ka itilize kòmandman an: git shortlog -ns --group=author - -group=trelè:ko-otè-pa

    Pwodiksyon Shortlog ka rasanble lè l sèvi avèk spesifikatè fòma, ak opsyon "--group" la ka siyifikativman senplifye kreyasyon rapò konplèks epi elimine nesesite pou kòmandman klasman adisyonèl. Pa egzanp, pou kreye yon rapò ak enfòmasyon sou konbyen komite pou yon lage yo te aksepte nan chak mwa, ou ka presize: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Anvan sa, pou fè yon operasyon menm jan an li ta nesesè pou sèvi ak sèvis piblik sòt ak uniq: git log v2.38.0 .. —date='format:%Y -%m' —format='%cd' | sòt | iniq -c

  • Kapasite yo nan mekanis "cruft pack" yo, ki fèt pou anbalaj objè inaccessible ki pa referans nan depo a (pa referans pa branch oswa tag), yo te elaji. 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. Mekanis "cruft pack" la pèmèt ou estoke tout objè ki pa ka jwenn yo nan yon sèl fichye pake, epi montre done sou tan modifikasyon chak objè nan yon tab separe, ki estoke nan yon fichye separe ak ekstansyon ".mtimes", pou yo fè sa. pa sipèpoze ak tan total modifikasyon an.

    Se opsyon "—prune =" ki detèmine kantite tan objè ki pa ka jwenn yo rete nan depo a anvan yo efase yo. " Sepandan, pandan y ap reta anvan efase se yon fason jistis efikas ak pratik yo anpeche koripsyon depo akòz kondisyon ras, li pa 100% serye. Pou fè li pi fasil retabli yon depo ki domaje, nouvo lage a bay kapasite pou sove objè ki manke yo lè li ajoute opsyon "--expire-to" nan lòd "git repack" la, ki pèmèt ou presize yon dosye pou kreye yon ekstèn. kopi tout objè efase yo. Pou egzanp, pou konsève pou objè ki pa ka jwenn yo ki pa chanje nan 5 dènye minit yo nan dosye backup.git la, ou ka itilize kòmandman an: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Siyifikativman ogmante (jiska 70%) vitès la nan "git grep -cached" operasyon an lè w ap chèche nan zòn ki itilize klonaj pasyèl (sparse-checkout) ak pou ki gen endèks pasyèl (sparse endèks). Précédemment, lè yo espesifye opsyon "-cached", rechèch la te pote soti an premye nan endèks regilye a, ak Lè sa a, nan sa yo ki pasyèl, ki te mennen nan reta aparan lè w ap chèche nan depo gwo.
  • Verifikasyon sèvè a nan koerans nouvo objè yo anvan yo mete yo nan depo a pandan operasyon "git push" la te akselere. Pa chanje nan kontablite pou sèlman te deklare lyen lè tcheke, nan yon depo tès ak 7 milyon lyen, nan ki sèlman 3% yo kouvri pa operasyon an pouse, optimize yo te pèmèt diminye tan an tcheke pa 4.5 fwa.
  • Pou pwoteje kont potansyèl debòde nonb antye relatif nan kòd la, lòd "git aplike" limite gwosè maksimòm plak ki ka trete. Si gwosè patch la depase 1 GB, kounye a pral parèt yon erè.
  • Pou pwoteje kont frajilite potansyèl yo, yo te fè chanjman pou netwaye enfòmasyon ki pa nesesè nan tèt yo mete lè w ap itilize modil h2h3 ak opsyon GIT_TRACE_CURL=1 oswa GIT_CURL_VERBOSE=1 ansanm ak HTTP/2.
  • Lè w ap fè yon chèk sou yon branch ki se yon lyen senbolik nan yon lòt branch, kòmandman "git symbolic-ref HEAD" kounye a montre non branch sib la olye non lyen senbolik la.
  • Te ajoute sipò pou agiman @{-1} nan opsyon "--edit-description" ("git branch —edit-description @{-1}") pou modifye deskripsyon yon branch anvan an.
  • Te ajoute kòmandman "git merge-tree --stdin" pou pase yon lis opsyon atravè opinyon estanda.
  • Sou sistèm fichye rezo a, fsmonitor handler la, ki kontwole chanjman nan sistèm fichye a, se enfim pa default.

Sous: opennet.ru

Add nouvo kòmantè