Git సబ్మాడ్యూళ్ల కోసం ప్రాక్సీ రూటింగ్
ప్రధాన Git checkout ప్రాక్సీ ద్వారా పనిచేసినా దాని పిల్లలు పనిచేయకపోతే సబ్మాడ్యూళ్ల URLలు, ట్రాన్స్పోర్ట్ రకాలు, రిపోజిటరీ కాన్ఫిగరేషన్ను పరిశీలించండి.
ప్రధాన రిపోజిటరీ విజయవంతంగా clone కావడం దాని సబ్మాడ్యూళ్లను పరీక్షించదు. సబ్మాడ్యూల్ మరో Git రిపోజిటరీ; అది వేరే హోస్ట్లో ఉండవచ్చు, వేరే ట్రాన్స్పోర్ట్ను ఉపయోగించవచ్చు.
ముందుగా ప్రకటించిన URLలను చదవండి:
git -C project config --file .gitmodules --get-regexp '^submodule\..*\.url$'
git -C project submodule status --recursive
HTTPS ద్వారా తెచ్చిన parent రిపోజిటరీలో git@host: ఉపయోగించే సబ్మాడ్యూల్ ఉండవచ్చు. HTTP ప్రాక్సీ సెట్టింగ్ ఆ SSH కనెక్షన్ను కాన్ఫిగర్ చేయదు. Relative సబ్మాడ్యూల్ URLలను ప్రాజెక్ట్ పేరు ఆధారంగా ఊహించిన వెబ్ చిరునామాకు కాకుండా superprojectకు సరైన remote ఆధారంగా పరిష్కరించాలి.
రిపోజిటరీ స్థానిక సెట్టింగ్లకు పరిధి ఉంటుంది
స్థానిక http.proxy ఎంట్రీ దాన్ని కలిగి ఉన్న కాన్ఫిగరేషన్ ఫైల్ గల రిపోజిటరీకి చెందుతుంది. Parentను మాత్రమే తనిఖీ చేస్తే ప్రారంభించిన child రిపోజిటరీలో ఉపయోగించే ప్రతి effective సెట్టింగ్ కనిపిస్తుందని అనుకోకండి.
Recursive update సమయంలో HTTPS ప్రాక్సీని తాత్కాలికంగా override చేయడానికి Git command-line కాన్ఫిగరేషన్ను ఆ invocationకు అందించవచ్చు:
git -C project -c http.proxy=http://203.0.113.10:8080 \
submodule update --init --recursive
ఉదాహరణ endpointను మార్చండి. Public proxyలను అనుమతించే మార్గంలోని public HTTPS సబ్మాడ్యూళ్లకు HTTP proxy జాబితా అభ్యర్థి చిరునామాలను ఇస్తుంది. ఇది సబ్మాడ్యూళ్ల SSH URLలను HTTPSగా మార్చదు; ఎంచుకున్న మార్గం ఆశ్చర్యకరంగా ఉంటే URL-ఆధారిత నిర్దిష్ట కాన్ఫిగరేషన్ను కూడా తనిఖీ చేయండి.
నమోదైన URL మారినప్పుడు
Initialization సమయంలో Git సబ్మాడ్యూల్ కాన్ఫిగరేషన్ను స్థానికంగా నమోదు చేస్తుంది. ప్రాజెక్ట్ సబ్మాడ్యూల్ URL మారితే, ప్రాక్సీ పనిచేయడం లేదని నిర్ణయించే ముందు ప్రస్తుత ప్రకటనను స్థానికంగా నమోదైన విలువతో పోల్చండి. డాక్యుమెంట్ చేసిన sync operation project declaration నుంచి నమోదైన URLలను నవీకరిస్తుంది; అది network proxy setting కాదు.
Nested failuresలో errorలో పేర్కొన్న ఖచ్చితమైన submodule path మరియు remoteను గమనించండి. Recursive operation అనేక hostsను సంప్రదించవచ్చు; public host proxyని ఉపయోగిస్తుండగా internal hostకు direct exception అవసరం కావచ్చు.
Transport errorsను repository errors నుంచి వేరు చేయండి. అందుబాటులో లేని commit, repository access denied, proxy connection failure—ఒకే “submodule update failed” ఫలితానికి వేర్వేరు కారణాలు.