2012-12-23 46 views
15

मैं निम्न आदेश के साथ पूरे काम कर पेड़ डाउनलोड किया है:स्थानीय रेपो में एंड्रॉइड संस्करण कैसे स्विच करें?

repo init -u https://android.googlesource.com/platform/manifest 
repo sync -j8 

सफ़लतापूर्वक समन्वयन के बाद, मैं 2.3.7 Android के लिए काम कर रहे पेड़ स्विच करना चाहते हैं। आप देखते हैं कि मैंने "repo init" जब "-b" पैरामीटर के साथ शाखा निर्दिष्ट नहीं की है। तो मुझे लगता है कि सभी टैग की जानकारी डाउनलोड हो जाना चाहिए और मैं आसानी से निम्न आदेश के साथ एंड्रॉयड 2.3.7 करने के लिए स्विच कर सकते हैं:

repo forall -c git checkout android-2.3.7_r1 

लेकिन यह जैसे कई त्रुटियों का उत्पादन:

error: pathspec 'android-2.3.7_r1' did not match any file(s) known to git. 

तो मैं कैसे कर सकते हैं "repo init -b android-2.3.7_r1" और "repo sync" के बिना एंड्रॉइड 2.3.7 पर स्विच करें?

उत्तर

20

आप repo forall का उपयोग करके इस समस्या को हल नहीं कर सकते हैं।

आश्वस्त होने के लिए मान लें कि आपका वर्तमान एंड्रॉइड पेड़ साफ है - कोई स्थानीय परिवर्तन या काम नहीं करता है, यानी repo status कुछ भी नहीं दिखाता है।

cd $ANDROID_ROOT 
cd .repo/manifests 
git branch -av # see all available branches on origin 
# choose one you want, check out to it: 
git checkout origin/<my_selected_android_version> 

ध्यान दें कि उपरोक्त आदेश प्रकट रेपो में अलग HEAD पैदा करेगा:

ठीक से Android संस्करण स्विच करने के लिए, तुम सब को बदलने की जरूरत अपने प्रकट भंडार के लिए शाखा, इस तरह है।

git checkout --track origin/<my_selected_android_version> 

अद्यतन 2014/09/05: आपको लगता है कि पसंद नहीं है, स्थानीय ट्रैकिंग शाखा बनाने के लिए --track (या संक्षेप में -t) जोड़ने रेपो का नवीनतम संस्करण के लिए, git checkout ... जीता ऊपर ' टी पहले की तरह काम नहीं करता क्योंकि अगली repo sync मैनिफेस्ट रिपोजिटरी को शाखा में वापस लाएगी जिसका उपयोग repo init पर किया गया था।

लेकिन वह भी मतलब है अब आप क्या चाहते हैं, अर्थात् करने के लिए बहुत आसान तरीका है कि वहाँ:

repo init -b <my_selected_android_version> 

इस तरह के चयनात्मक repo init-b (-u के बिना) केवल प्रकट शाखा अपडेट हो जाएगा और नहीं तो स्पर्श नहीं करेगा के साथ अपने पेड़।

अब, बस इसे सिंक:

repo sync -j8 

और कुछ समय बाद, अपने Android पेड़ एक और संस्करण के लिए स्विच जाएगा।

इस ऑपरेशन की गति ज्यादातर default.xml मेनिफेस्ट फ़ाइल पुराने और नए एंड्रॉइड संस्करणों के बीच अलग-अलग होती है - क्योंकि अगर कुछ गिट रिपोजिटरी को नए मैनिफेस्ट में जोड़ा गया था, तो यह समय क्लोन करने में व्यतीत करेगा। और अगर कुछ भंडार हटा दिया गया था, तो वास्तव में इसे दूर उड़ जाएगा।

लेकिन, बड़े पैमाने पर, यह विधि स्क्रैच से ब्रांड के नए एंड्रॉइड पेड़ को शुरू करने से कहीं अधिक तेज है।

+0

में

यह भी देखना विवरण अपनी पोस्ट पढ़ने के बाद, मुझे एहसास हुआ कि मैंने गिट/रेपो के कुछ महत्वपूर्ण पहलुओं को गलत समझा है। बहुत बहुत धन्यवाद! –

+3

ऐसा लगता है कि रेपो बदल गया है, '.repo/manifest' अब' .repo/manifests' है? – nmr

1

यदि आप जिस शाखा में हैं और जिस शाखा में आप स्विच करेंगे, वह एक ही manifest.xml फ़ाइल है, तो आप ऐसा करने के लिए निम्न आदेशों का उपयोग कर सकते हैं।

रेपो -c Git forall forall AOSP --tags लाने रेपो -c Git चेकआउट बी john5.1.1_r14_api22 android-5.1.1_r14 http://johnliao52.github.io/2016/03/27/git-repo-skills.html

+0

चीनी में उपयोगी प्रलेखन के लिए धन्यवाद –