Git 2.41 సోర్స్ కంట్రోల్ సిస్టమ్ అందుబాటులో ఉంది

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

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

  • రిపోజిటరీలో సూచించబడని (బ్రాంచ్‌లు లేదా ట్యాగ్‌ల ద్వారా సూచించబడని) చేరుకోలేని వస్తువుల యొక్క మెరుగైన నిర్వహణ. చేరుకోలేని వస్తువులు చెత్త సేకరించేవారిచే తొలగించబడతాయి, అయితే జాతి పరిస్థితులను నివారించడానికి అవి తొలగించబడటానికి ముందు కొంత సమయం వరకు రిపోజిటరీలో ఉంటాయి. చేరుకోలేని వస్తువులు సంభవించే కాలాన్ని ట్రాక్ చేయడానికి, సారూప్య వస్తువులను మార్చే సమయంతో వాటికి ట్యాగ్‌లను జోడించడం అవసరం, ఇది వాటిని ఒకే ప్యాక్ ఫైల్‌లో నిల్వ చేయడానికి అనుమతించదు, దీనిలో అన్ని వస్తువులు సాధారణ మార్పు సమయాన్ని కలిగి ఉంటాయి. ఇంతకు ముందు, చేరుకోలేని ప్రతి వస్తువు ప్రత్యేక ఫైల్‌లో నిల్వ చేయబడుతుంది, ఇది తొలగించడానికి ఇంకా అర్హత లేని తాజా చేరుకోలేని వస్తువులు పెద్ద సంఖ్యలో ఉన్నప్పుడు సమస్యలకు దారితీసింది. కొత్త విడుదలలో, "క్రాఫ్ట్ ప్యాక్స్" మెకానిజం అందుబాటులోకి రాని వస్తువులను ప్యాకింగ్ చేయడానికి డిఫాల్ట్‌గా ఉపయోగించబడుతుంది, ఇది చేరుకోలేని అన్ని వస్తువులను ఒకే ప్యాక్ ఫైల్‌లో నిల్వ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు ప్రతి వస్తువు యొక్క సవరణ సమయంపై డేటా ప్రత్యేక పట్టికలో ప్రతిబింబిస్తుంది, నిల్వ చేయబడుతుంది. “.mtimes” పొడిగింపుతో ఉన్న ఫైల్‌లో మరియు “.idx” పొడిగింపుతో ఇండెక్స్ ఫైల్‌ని ఉపయోగించి లింక్ చేయబడింది.
    Git 2.41 సోర్స్ కంట్రోల్ సిస్టమ్ అందుబాటులో ఉంది
  • ప్యాక్ ఫైల్‌ల కోసం డిస్క్‌లో రివర్స్ ఇండెక్స్‌ను నిర్వహించడం డిఫాల్ట్‌గా ప్రారంభించబడుతుంది. టోర్వాల్డ్స్/లైనక్స్ రిపోజిటరీపై పరీక్షిస్తున్నప్పుడు, రివర్స్ ఇండెక్స్ ఉపయోగించడం వల్ల రిసోర్స్-ఇంటెన్సివ్ “గిట్ పుష్” ఆపరేషన్‌లను 1.49 రెట్లు వేగవంతం చేయడం సాధ్యపడింది మరియు “గిట్ క్యాట్-ని ఉపయోగించి ఒకే వస్తువు పరిమాణాన్ని లెక్కించడం వంటి సాధారణ కార్యకలాపాలు” సాధ్యమయ్యాయి. ఫైల్ —batch='%(objectsize:disk)' "77 సార్లు. రివర్స్ ఇండెక్స్‌తో ఫైల్‌లు (“.rev”) రిపోజిటరీ లోపల “.git/objects/pack” డైరెక్టరీలో నిల్వ చేయబడతాయి.

    Git మొత్తం డేటాను వస్తువుల రూపంలో నిల్వ చేస్తుందని గుర్తుంచుకోండి, అవి ప్రత్యేక ఫైల్‌లలో ఉంటాయి. రిపోజిటరీతో పని చేసే సామర్థ్యాన్ని పెంచడానికి, వస్తువులు అదనంగా ప్యాక్ ఫైల్‌లలో ఉంచబడతాయి, దీనిలో సమాచారం ఒకదానికొకటి అనుసరించే వస్తువుల ప్రవాహం రూపంలో ప్రదర్శించబడుతుంది (గిట్ ఫెచ్ మరియు గిట్ పుష్‌తో వస్తువులను బదిలీ చేసేటప్పుడు ఇదే ఆకృతి ఉపయోగించబడుతుంది. ఆదేశాలు). ప్రతి ప్యాక్ ఫైల్ కోసం, ఒక ఇండెక్స్ ఫైల్ (.idx) సృష్టించబడుతుంది, ఇది ఆబ్జెక్ట్ ఐడెంటిఫైయర్‌ని ఉపయోగించి అందించిన వస్తువు నిల్వ చేయబడే ప్యాక్ ఫైల్‌లోని ఆఫ్‌సెట్‌ను చాలా త్వరగా గుర్తించడానికి మిమ్మల్ని అనుమతిస్తుంది.

    కొత్త విడుదలలో చేర్చబడిన రివర్స్ ఇండెక్స్ ప్యాక్ ఫైల్‌లో ఆబ్జెక్ట్ యొక్క ప్లేస్‌మెంట్ గురించిన సమాచారం నుండి ఆబ్జెక్ట్ ఐడెంటిఫైయర్‌ను నిర్ణయించే ప్రక్రియను ఆప్టిమైజ్ చేయడం లక్ష్యంగా పెట్టుకుంది. ఇంతకుముందు, ప్యాక్ ఫైల్‌ను అన్వయించేటప్పుడు అటువంటి మార్పిడి ఫ్లైలో నిర్వహించబడింది మరియు మెమరీలో మాత్రమే నిల్వ చేయబడుతుంది, ఇది సారూప్య సూచికలను మళ్లీ ఉపయోగించడాన్ని అనుమతించదు మరియు ప్రతిసారీ సూచికను ఉత్పత్తి చేయవలసి వస్తుంది. ఇండెక్స్‌ను నిర్మించడం అనేది ఆబ్జెక్ట్-పొజిషన్ జతల శ్రేణిని నిర్మించడం మరియు స్థానం వారీగా క్రమబద్ధీకరించడం వరకు వస్తుంది, ఇది పెద్ద ప్యాక్ ఫైల్‌ల కోసం చాలా సమయం పడుతుంది.

    ఉదాహరణకు, ప్రత్యక్ష సూచికను ఉపయోగించే వస్తువుల యొక్క కంటెంట్‌లను ప్రదర్శించే ఆపరేషన్, ఆబ్జెక్ట్‌ల పరిమాణాన్ని ప్రదర్శించే ఆపరేషన్ కంటే 62 రెట్లు వేగంగా ఉంటుంది, దీని కోసం స్థానం-టు-ఆబ్జెక్ట్ డేటా ఇండెక్స్ చేయబడదు. రివర్స్ ఇండెక్స్‌ని ఉపయోగించిన తర్వాత, ఈ కార్యకలాపాలు దాదాపు అదే సమయాన్ని తీసుకోవడం ప్రారంభించాయి. రివర్స్ ఇండెక్స్‌లు డిస్క్ నుండి రెడీమేడ్ డేటాను నేరుగా బదిలీ చేయడం ద్వారా ఫెచ్ మరియు పుష్ ఆదేశాలను అమలు చేస్తున్నప్పుడు ఆబ్జెక్ట్ పంపే కార్యకలాపాలను వేగవంతం చేయడానికి మిమ్మల్ని అనుమతిస్తాయి.

    Git 2.41 సోర్స్ కంట్రోల్ సిస్టమ్ అందుబాటులో ఉంది

  • పరిమిత యాక్సెస్‌తో రిపోజిటరీలను యాక్సెస్ చేస్తున్నప్పుడు ఆధారాలను బదిలీ చేయడానికి ఉపయోగించే “క్రెడెన్షియల్ హెల్పర్” ప్రోటోకాల్, క్రెడెన్షియల్ హ్యాండ్లర్ మరియు ప్రామాణీకరణ నిర్వహించబడే సేవ మధ్య WWW-అథెంటికేట్ హెడర్‌లను పాస్ చేయడానికి మద్దతును జోడించింది. WWW-Authenticate హెడర్‌కు మద్దతు రిపోజిటరీలకు వినియోగదారు యాక్సెస్‌ను మరింత గ్రాన్యులర్‌గా వేరు చేయడానికి మరియు అభ్యర్థనల కోసం అందుబాటులో ఉన్న స్కోప్‌ల డీలిమిటేషన్ కోసం OAuth స్కోప్ పారామితులను పాస్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
  • for-each-ref ఆదేశానికి ఫార్మాటింగ్ ఎంపిక "%(ముందు-వెనుక:" జోడించబడింది: )”, ఇది మరొక శాఖకు సంబంధించి (కమిట్ స్థాయిలో ఒక శాఖ ఎంత వెనుక లేదా ముందు ఉంది) ఒక నిర్దిష్ట శాఖలో ఉన్న లేదా హాజరుకాని కమిట్‌ల సంఖ్య గురించి సమాచారాన్ని వెంటనే పొందేందుకు మిమ్మల్ని అనుమతిస్తుంది. ఇంతకు ముందు, అటువంటి సమాచారాన్ని పొందడానికి, మీరు రెండు వేర్వేరు ఆదేశాలను అమలు చేయాల్సి ఉంటుంది: “git rev-list —count main..my-feature” బ్రాంచ్‌కు ప్రత్యేకమైన కమిట్‌ల సంఖ్యను పొందడానికి మరియు “git rev-list —count my-feature” ..ప్రధానం” తప్పిపోయిన సంఖ్యను పొందడానికి కమిట్‌లు. ఇప్పుడు అలాంటి గణనలను ఒకే ఆదేశానికి తగ్గించవచ్చు, ఇది హ్యాండ్లర్ల రచనను సులభతరం చేస్తుంది మరియు అమలు సమయాన్ని తగ్గిస్తుంది. ఉదాహరణకు, విలీనం చేయని బ్రాంచ్‌లను చూపడానికి మరియు అవి ప్రధాన శాఖకు వెనుక లేదా ముందు ఉన్నాయో లేదో అంచనా వేయడానికి, మీరు ఒక-లైనర్‌ని ఉపయోగించవచ్చు: $ git for-each-ref —no-merged=origin/HEAD \ —format ='%(refname:short) %(ముందు-వెనుక:మూలం/HEAD)' \refs/heads/tb/ | column -t tb/cruft-extra-tips 2 96 tb/for-each-ref—16 96 tb/roaring-bitmaps 47 3ని మినహాయించండి, ఇది గతంలో ఉపయోగించిన స్క్రిప్ట్‌కు బదులుగా 17 రెట్లు నెమ్మదిగా నడుస్తుంది: $ git for-each-ref — format='%(refname:short)' —no-merged=మూలం/HEAD \ refs/heads/tb | ref చదివేటప్పుడు ముందుకు చేయి = "$(git rev-list -count original/HEAD..$ref)" వెనుక="$(git rev-list -count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$ముందు" "$వెనుక" పూర్తయింది | కాలమ్ -t tb/cruft-extra-tips 2 96 tb/for-each-ref—16 96 tb/roaring-bitmaps 47 3 మినహాయించండి
  • “-porcelain” ఎంపిక “git fetch” కమాండ్‌కు జోడించబడింది, పేర్కొన్నప్పుడు, అవుట్‌పుట్ ఫార్మాట్‌లో ఉత్పత్తి చేయబడుతుంది “ ", తక్కువ చదవగలిగేది, కానీ స్క్రిప్ట్‌లలో అన్వయించడానికి మరింత సౌకర్యవంతంగా ఉంటుంది.
  • "fetch.hideRefs" సెట్టింగ్ జోడించబడింది, ఇది సర్వర్ పూర్తి ఆబ్జెక్ట్‌లను పంపిందో లేదో తనిఖీ చేసే దశలో స్థానిక రిపోజిటరీలోని కొన్ని సూచనలను దాచడం ద్వారా "git ఫెచ్" కార్యకలాపాలను వేగవంతం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది, దీని వలన సమయం ఆదా అవుతుంది డేటా నేరుగా పొందే సర్వర్‌లకు మాత్రమే చెక్‌ని పరిమితం చేస్తుంది. ఉదాహరణకు, పెద్ద సంఖ్యలో ట్రాక్ చేయబడిన బాహ్య లింక్‌లను కలిగి ఉన్న రిపోజిటరీలతో సిస్టమ్‌లో పరీక్షను అమలు చేస్తున్నప్పుడు, టార్గెట్ సర్వర్ $రిమోట్‌కు చిరునామాకు సంబంధించిన అన్ని లింక్‌లను మినహాయించి, git ఫెచ్ ఆపరేషన్ అమలును 20 నిమిషాల నుండి 30 సెకన్లకు తగ్గించింది. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ $remoteని పొందండి
  • "git fsck" కమాండ్ యాక్సెసిబిలిటీ బిట్‌మ్యాప్‌లు మరియు రివర్స్ ఇండెక్స్‌లలో అవినీతి, చెక్‌సమ్ సమ్మతి మరియు విలువల యొక్క ఖచ్చితత్వాన్ని తనిఖీ చేసే సామర్థ్యాన్ని అందిస్తుంది.
  • $GIT_DIR లోపల సిమ్‌లింక్‌లను కలిగి ఉన్న రిపోజిటరీ నుండి కాపీ చేయడానికి ప్రయత్నిస్తున్నప్పుడు "git clone --local" ఆదేశం ఇప్పుడు లోపాన్ని ప్రదర్శిస్తుంది.

మూలం: opennet.ru

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