आप 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
मेनिफेस्ट फ़ाइल पुराने और नए एंड्रॉइड संस्करणों के बीच अलग-अलग होती है - क्योंकि अगर कुछ गिट रिपोजिटरी को नए मैनिफेस्ट में जोड़ा गया था, तो यह समय क्लोन करने में व्यतीत करेगा। और अगर कुछ भंडार हटा दिया गया था, तो वास्तव में इसे दूर उड़ जाएगा।
लेकिन, बड़े पैमाने पर, यह विधि स्क्रैच से ब्रांड के नए एंड्रॉइड पेड़ को शुरू करने से कहीं अधिक तेज है।
में
यह भी देखना विवरण अपनी पोस्ट पढ़ने के बाद, मुझे एहसास हुआ कि मैंने गिट/रेपो के कुछ महत्वपूर्ण पहलुओं को गलत समझा है। बहुत बहुत धन्यवाद! –
ऐसा लगता है कि रेपो बदल गया है, '.repo/manifest' अब' .repo/manifests' है? – nmr