GitHub విడుదల పేజీలలో స్వయంచాలకంగా రూపొందించబడిన “.tar.gz” మరియు “.tgz” ఆర్కైవ్లను రూపొందించే విధానాన్ని మార్చింది, ఇది వాటి చెక్సమ్లలో మార్పులకు దారితీసింది మరియు సమగ్రతను నిర్ధారించడానికి GitHub నుండి డౌన్లోడ్ చేసిన ఆర్కైవ్లను మునుపటి వాటికి వ్యతిరేకంగా తనిఖీ చేసే ఆటోమేటెడ్ బిల్డ్ సిస్టమ్లలో భారీ వైఫల్యాలకు దారితీసింది. నిల్వ చేయబడిన చెక్సమ్లు, ఉదాహరణకు, ప్యాకేజీ మెటాడేటాలో లేదా బిల్డ్ స్క్రిప్ట్లలో ఉంచబడతాయి.
విడుదల 2.38తో ప్రారంభించి, Git టూల్కిట్ డిఫాల్ట్గా gzip యొక్క అంతర్నిర్మిత అమలును కలిగి ఉంది, ఇది ఆపరేటింగ్ సిస్టమ్లలో ఈ కంప్రెషన్ పద్ధతికి మద్దతును ఏకీకృతం చేయడం మరియు ఆర్కైవ్ సృష్టి పనితీరును మెరుగుపరచడం సాధ్యం చేసింది. GitHub దాని ఇన్ఫ్రాస్ట్రక్చర్లో git సంస్కరణను నవీకరించిన తర్వాత మార్పును తీసుకుంది. అంతర్నిర్మిత zlib-ఆధారిత gzip ఇంప్లిమెంటేషన్ ద్వారా రూపొందించబడిన కంప్రెస్డ్ ఆర్కైవ్లు gzip యుటిలిటీ ద్వారా సృష్టించబడిన ఆర్కైవ్ల నుండి బైనరీ భిన్నంగా ఉండటం వలన సమస్య ఏర్పడింది, దీని ఫలితంగా వివిధ రకాలైన git వెర్షన్ల ద్వారా రూపొందించబడిన ఆర్కైవ్లకు వేర్వేరు చెక్సమ్లు వచ్చాయి. "git archive" ఆదేశం.
దీని ప్రకారం, GitHubలో gitని నవీకరించిన తర్వాత, పాత చెక్సమ్లను ఉపయోగించి ధృవీకరణను ఆమోదించని విడుదల పేజీలలో కొద్దిగా భిన్నమైన ఆర్కైవ్లు ప్రదర్శించబడటం ప్రారంభించాయి. వివిధ బిల్డ్ సిస్టమ్లు, నిరంతర ఇంటిగ్రేషన్ సిస్టమ్లు మరియు సోర్స్ కోడ్ నుండి ప్యాకేజీలను రూపొందించడానికి సాధనాల్లో సమస్య వ్యక్తమైంది. ఉదాహరణకు, దాదాపు 5800 FreeBSD పోర్ట్ల అసెంబ్లీ, GitHub నుండి డౌన్లోడ్ చేయబడిన సోర్స్ కోడ్లు విచ్ఛిన్నమయ్యాయి.
అవాంతరాల గురించి ప్రారంభ ఫిర్యాదులకు ప్రతిస్పందనగా, GitHub ప్రారంభంలో ఆర్కైవ్ల కోసం శాశ్వత చెక్సమ్లు ఎప్పుడూ హామీ ఇవ్వబడలేదని పేర్కొన్నాయి. ప్రభావిత బిల్డ్ సిస్టమ్ల కార్యాచరణను పునరుద్ధరించడానికి వివిధ పర్యావరణ వ్యవస్థలలో మెటాడేటాను నవీకరించడానికి భారీ మొత్తంలో పని అవసరమని చూపిన తర్వాత, GitHub ప్రతినిధులు తమ ఆలోచనలను మార్చుకున్నారు, మార్పును మార్చారు మరియు ఆర్కైవ్లను రూపొందించే పాత పద్ధతిని తిరిగి ఇచ్చారు.
Git డెవలపర్లు ఇంకా ఒక నిర్ణయానికి రాలేదు మరియు సాధ్యమయ్యే చర్యల గురించి మాత్రమే చర్చిస్తున్నారు. డిఫాల్ట్ gzip యుటిలిటీని ఉపయోగించడాన్ని తిరిగి పొందడం వంటి ఎంపికలు పరిగణించబడతాయి; పాత ఆర్కైవ్లతో అనుకూలతను కొనసాగించడానికి “--స్టేబుల్” ఫ్లాగ్ను జోడించడం; అంతర్నిర్మిత అమలును ప్రత్యేక ఆర్కైవ్ ఆకృతికి లింక్ చేయడం; పాత కమిట్ల కోసం gzip యుటిలిటీని ఉపయోగించడం మరియు నిర్దిష్ట తేదీ నుండి కమిట్ల కోసం ఇన్లైన్ అమలు చేయడం; కంప్రెస్ చేయని ఆర్కైవ్లకు మాత్రమే ఫార్మాట్ స్థిరత్వానికి హామీ ఇస్తుంది.
బాహ్య వినియోగానికి కాల్కు తిరిగి వెళ్లడం చెక్సమ్ మార్పులేని సమస్యను పూర్తిగా పరిష్కరించదు, ఎందుకంటే బాహ్య gzip ప్రోగ్రామ్లో మార్పు కూడా ఆర్కైవ్ ఆకృతిలో మార్పుకు దారి తీస్తుంది కాబట్టి నిర్ణయం తీసుకోవడంలో ఇబ్బంది వివరించబడింది. ప్రస్తుతం, పాత ప్రవర్తనను డిఫాల్ట్గా (బాహ్య gzip యుటిలిటీని పిలుస్తుంది) మరియు సిస్టమ్లో gzip యుటిలిటీ లేనప్పుడు అంతర్నిర్మిత అమలును ఉపయోగించే ప్యాచ్ల సమితి సమీక్ష కోసం ప్రతిపాదించబడింది. పాచెస్ డాక్యుమెంటేషన్కు "git ఆర్కైవ్" అవుట్పుట్ యొక్క స్థిరత్వానికి హామీ ఇవ్వబడదని మరియు భవిష్యత్తులో ఫార్మాట్ మారవచ్చు అనే ప్రస్తావనను కూడా జోడిస్తుంది.
మూలం: opennet.ru