Git 2.39 మూల నియంత్రణ విడుదల

రెండు నెలల అభివృద్ధి తర్వాత, పంపిణీ చేయబడిన మూల నియంత్రణ వ్యవస్థ Git 2.39 విడుదల చేయబడింది. Git అత్యంత జనాదరణ పొందిన, విశ్వసనీయమైన మరియు అధిక-పనితీరు గల సంస్కరణ నియంత్రణ వ్యవస్థలలో ఒకటి, ఇది శాఖలు మరియు విలీనం ఆధారంగా సౌకర్యవంతమైన నాన్-లీనియర్ డెవలప్‌మెంట్ సాధనాలను అందిస్తుంది. చరిత్ర యొక్క సమగ్రతను మరియు రెట్రోయాక్టివ్ మార్పులకు ప్రతిఘటనను నిర్ధారించడానికి, ప్రతి కమిట్‌లో మొత్తం మునుపటి చరిత్ర యొక్క అవ్యక్త హాషింగ్ ఉపయోగించబడుతుంది; డెవలపర్‌ల డిజిటల్ సంతకాలతో వ్యక్తిగత ట్యాగ్‌లు మరియు కమిట్‌లను ధృవీకరించడం కూడా సాధ్యమే.

మునుపటి విడుదలతో పోలిస్తే, కొత్త వెర్షన్‌లో 483 మార్పులు ఉన్నాయి, 86 మంది డెవలపర్‌ల భాగస్వామ్యంతో తయారు చేయబడింది, అందులో 31 మంది మొదటిసారిగా అభివృద్ధిలో పాల్గొన్నారు. ప్రధాన ఆవిష్కరణలు:

  • మార్పుల చరిత్ర నుండి గణాంకాలతో సారాంశాలను ప్రదర్శించడానికి రూపొందించబడిన “git shortlog” కమాండ్, రచయిత లేదా కమిటర్‌కు పరిమితం కాకుండా ఫీల్డ్‌ల ద్వారా కమిట్‌ల యొక్క ఏకపక్ష సమూహానికి “-group” ఎంపికను జోడించింది. ఉదాహరణకు, "Co-authored-by" ఫీల్డ్‌లో పేర్కొన్న సహాయకులను పరిగణనలోకి తీసుకుని, మార్పుల సంఖ్య గురించి సమాచారంతో డెవలపర్‌ల జాబితాను ప్రదర్శించడానికి, మీరు ఆదేశాన్ని ఉపయోగించవచ్చు: git shortlog -ns --group=author - -group=ట్రైలర్:co-authored-by

    షార్ట్‌లాగ్ అవుట్‌పుట్‌ను ఫార్మాటింగ్ స్పెసిఫైయర్‌లను ఉపయోగించి సమగ్రపరచవచ్చు మరియు “--గ్రూప్” ఎంపిక సంక్లిష్ట నివేదికల సృష్టిని గణనీయంగా సులభతరం చేస్తుంది మరియు అదనపు సార్టింగ్ ఆదేశాల అవసరాన్ని తొలగిస్తుంది. ఉదాహరణకు, ప్రతి నెలలో ఇచ్చిన విడుదలకు ఎన్ని కమిట్‌లు ఆమోదించబడ్డాయి అనే సమాచారంతో నివేదికను రూపొందించడానికి, మీరు పేర్కొనవచ్చు: 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 ఇంతకు ముందు, ఇదే విధమైన ఆపరేషన్ చేయడానికి క్రమబద్ధీకరణ మరియు యూనిక్ యుటిలిటీలను ఉపయోగించడం అవసరం: git log.2.38.0 vXNUMX. .. —date='format:%Y -%m' —format='%cd' | క్రమబద్ధీకరించు | uniq -c

  • రిపోజిటరీలో సూచించబడని (బ్రాంచ్‌లు లేదా ట్యాగ్‌ల ద్వారా సూచించబడని) చేరుకోలేని వస్తువులను ప్యాకింగ్ చేయడానికి రూపొందించబడిన "క్రాఫ్ట్ ప్యాక్స్" మెకానిజం యొక్క సామర్థ్యాలు విస్తరించబడ్డాయి. చేరుకోలేని వస్తువులు చెత్త సేకరించేవారిచే తొలగించబడతాయి, అయితే జాతి పరిస్థితులను నివారించడానికి అవి తొలగించబడటానికి ముందు కొంత సమయం వరకు రిపోజిటరీలో ఉంటాయి. “క్రాఫ్ట్ ప్యాక్‌లు” మెకానిజం మీరు చేరుకోలేని అన్ని వస్తువులను ఒక ప్యాక్ ఫైల్‌లో నిల్వ చేయడానికి మరియు ప్రతి వస్తువు యొక్క సవరణ సమయంపై డేటాను ప్రత్యేక పట్టికలో ప్రదర్శించడానికి అనుమతిస్తుంది, “.mtimes” పొడిగింపుతో ప్రత్యేక ఫైల్‌లో నిల్వ చేయబడుతుంది, తద్వారా అవి మొత్తం సవరణ సమయంతో అతివ్యాప్తి చెందదు.

    చేరుకోలేని వస్తువులు వాస్తవానికి తొలగించబడటానికి ముందు రిపోజిటరీలో ఉండే కాలం “--prune=” ఎంపిక ద్వారా నిర్ణయించబడుతుంది. అయినప్పటికీ, రేసు పరిస్థితుల కారణంగా రిపోజిటరీ అవినీతిని నిరోధించడానికి తొలగించడానికి ముందు ఆలస్యం చేయడం చాలా ప్రభావవంతమైన మరియు ఆచరణాత్మక మార్గం, ఇది 100% నమ్మదగినది కాదు. దెబ్బతిన్న రిపోజిటరీని పునరుద్ధరించడాన్ని సులభతరం చేయడానికి, కొత్త విడుదల "git repack" కమాండ్‌కు "--expire-to" ఎంపికను జోడించడం ద్వారా తప్పిపోయిన వస్తువులను సేవ్ చేసే సామర్థ్యాన్ని అందిస్తుంది, ఇది బాహ్యంగా సృష్టించడానికి ఫైల్‌ను పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తుంది. తొలగించబడిన అన్ని వస్తువుల కాపీ. ఉదాహరణకు, backup.git ఫైల్‌లో గత 5 నిమిషాల్లో మారని చేరుకోలేని వస్తువులను సేవ్ చేయడానికి, మీరు ఆదేశాన్ని ఉపయోగించవచ్చు: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • పాక్షిక క్లోనింగ్ (స్పేర్స్-చెకౌట్) ఉపయోగించే మరియు పాక్షిక సూచికలు (స్పేర్స్ ఇండెక్స్) ఉన్న ప్రాంతాల్లో శోధిస్తున్నప్పుడు "git grep -cached" ఆపరేషన్ వేగం గణనీయంగా పెరిగింది (70% వరకు). ఇంతకుముందు, “-కాష్డ్” ఎంపికను పేర్కొనేటప్పుడు, శోధన మొదట సాధారణ ఇండెక్స్‌లో నిర్వహించబడింది, ఆపై పాక్షిక వాటిలో, పెద్ద రిపోజిటరీలలో శోధిస్తున్నప్పుడు గుర్తించదగిన జాప్యాలకు దారితీసింది.
  • "git push" ఆపరేషన్ సమయంలో కొత్త వస్తువులను రిపోజిటరీలో ఉంచడానికి ముందు వాటి పొందికను సర్వర్ యొక్క ధృవీకరణ వేగవంతం చేయబడింది. 7 మిలియన్ లింక్‌లతో కూడిన టెస్ట్ రిపోజిటరీలో, కేవలం 3% మాత్రమే పుష్ ఆపరేషన్ ద్వారా కవర్ చేయబడినప్పుడు, తనిఖీ చేసేటప్పుడు డిక్లేర్డ్ లింక్‌లకు మాత్రమే అకౌంటింగ్‌కు మారడం ద్వారా, ప్రవేశపెట్టిన ఆప్టిమైజేషన్‌లు తనిఖీ సమయాన్ని 4.5 రెట్లు తగ్గించడం సాధ్యం చేసింది.
  • కోడ్‌లో సంభావ్య పూర్ణాంకాల ఓవర్‌ఫ్లోల నుండి రక్షించడానికి, "git apply" ఆదేశం ప్రాసెస్ చేయగల గరిష్ట పరిమాణాల ప్యాచ్‌లను పరిమితం చేస్తుంది. ప్యాచ్ పరిమాణం 1 GB మించి ఉంటే, ఇప్పుడు ఎర్రర్ ప్రదర్శించబడుతుంది.
  • సంభావ్య దుర్బలత్వాల నుండి రక్షించడానికి, H2h3 మాడ్యూల్‌ను GIT_TRACE_CURL=1 లేదా GIT_CURL_VERBOSE=1 ఎంపికతో కలిపి HTTP/2తో ఉపయోగిస్తున్నప్పుడు సెట్ చేయబడిన హెడర్‌ల నుండి అనవసర సమాచారాన్ని క్లీన్ చేయడానికి మార్పులు చేయబడ్డాయి.
  • మరొక బ్రాంచ్‌కి సింబాలిక్ లింక్ అయిన బ్రాంచ్‌లో చెక్ అవుట్ చేస్తున్నప్పుడు, "git symbolic-ref HEAD" కమాండ్ ఇప్పుడు సిమ్‌లింక్ పేరు కాకుండా టార్గెట్ బ్రాంచ్ పేరును ప్రదర్శిస్తుంది.
  • మునుపటి బ్రాంచ్ వివరణను సవరించడం కోసం “--edit-description” ఎంపిక (“git branch —edit-description @{-1}”)కి @{-1} ఆర్గ్యుమెంట్‌కు మద్దతు జోడించబడింది.
  • ప్రామాణిక ఇన్‌పుట్ ద్వారా పారామితుల జాబితాను పాస్ చేయడానికి "git merge-tree --stdin" ఆదేశం జోడించబడింది.
  • నెట్‌వర్క్ ఫైల్ సిస్టమ్‌లలో, ఫైల్ సిస్టమ్‌లో మార్పులను పర్యవేక్షించే fsmonitor హ్యాండ్లర్ డిఫాల్ట్‌గా నిలిపివేయబడుతుంది.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి