रेपो कमांड संदर्भ

रेपो कई रिपॉजिटरी में काम को सरल बनाकर Git को पूरक बनाता है। रेपो और गिट के बीच संबंध की व्याख्या के लिए स्रोत नियंत्रण उपकरण देखें। रेपो पर अधिक जानकारी के लिए, रेपो README देखें।

रेपो का उपयोग निम्नलिखित रूप लेता है:

repo command options

वैकल्पिक तत्व कोष्ठक में दिखाए गए हैं [ ]। उदाहरण के लिए, कई कमांड project-list एक तर्क के रूप में लेते हैं। आप project-list नामों की सूची या परियोजनाओं के लिए स्थानीय स्रोत निर्देशिकाओं के पथों की सूची के रूप में निर्दिष्ट कर सकते हैं:

repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]

मदद

यह पृष्ठ केवल प्रमुख विकल्पों पर प्रकाश डालता है। पूर्ण विवरण के लिए कमांड लाइन सहायता देखें। जब रेपो स्थापित होता है, तो आप चलाकर सभी आदेशों के सारांश के साथ नवीनतम दस्तावेज़ पा सकते हैं:

repo help

आप इसे रेपो ट्री के भीतर चलाकर किसी भी कमांड के बारे में विस्तृत जानकारी देख सकते हैं:

repo help command

उदाहरण के लिए, निम्नलिखित कमांड रेपो के init तर्क के लिए एक विवरण और विकल्पों की सूची देता है, जो वर्तमान निर्देशिका में रेपो को आरंभ करता है। (विवरण के लिए init देखें।)

repo help init

या केवल उपलब्ध विकल्पों की सूची देखने के लिए, चलाएँ:

repo command --help
उदाहरण के लिए:
repo init --help

इस में

repo init -u url [options]

वर्तमान निर्देशिका में रेपो स्थापित करता है। यह रेपो स्रोत कोड और मानक एंड्रॉइड मेनिफेस्ट फ़ाइलों के लिए Git रिपॉजिटरी के साथ एक .repo/ निर्देशिका बनाता है।

विकल्प:

  • -u : एक यूआरएल निर्दिष्ट करें जिससे मैनिफ़ेस्ट रिपॉजिटरी पुनर्प्राप्त की जा सके। सामान्य मेनिफेस्ट https://android.googlesource.com/platform/manifest पर पाया जाता है।
  • -m : रिपॉजिटरी के भीतर एक मेनिफेस्ट फ़ाइल का चयन करें। यदि कोई मैनिफ़ेस्ट नाम चयनित नहीं है, तो डिफ़ॉल्ट default.xml है।
  • -b : एक संशोधन निर्दिष्ट करें, अर्थात, एक विशेष manifest-branch

नोट: सभी शेष रेपो कमांड के लिए, वर्तमान कार्यशील निर्देशिका या तो .repo/ की मूल निर्देशिका या मूल निर्देशिका की उपनिर्देशिका होनी चाहिए।

साथ-साथ करना

repo sync [project-list]

नए परिवर्तन डाउनलोड करता है और आपके स्थानीय परिवेश में कार्यशील फ़ाइलों को अद्यतन करता है, अनिवार्य रूप से सभी Git रिपॉजिटरी में git fetch पूरा करता है। यदि आप बिना तर्क के repo sync चलाते हैं, तो यह सभी परियोजनाओं के लिए फ़ाइलों को सिंक्रनाइज़ करता है।

जब आप repo sync चलाते हैं, तो यही होता है:

  • यदि प्रोजेक्ट को कभी सिंक्रनाइज़ नहीं किया गया है, तो repo sync git clone के बराबर है। दूरस्थ रिपॉजिटरी की सभी शाखाओं को स्थानीय प्रोजेक्ट निर्देशिका में कॉपी किया जाता है।

  • यदि प्रोजेक्ट पहले सिंक्रनाइज़ किया गया है, तो repo sync इसके बराबर है:

    git remote update
    git rebase origin/branch
    

    जहां branch स्थानीय परियोजना निर्देशिका में वर्तमान में चेक-आउट शाखा है। यदि स्थानीय शाखा दूरस्थ रिपॉजिटरी में किसी शाखा को ट्रैक नहीं कर रही है, तो प्रोजेक्ट के लिए कोई सिंक्रनाइज़ेशन नहीं होता है।

  • यदि Git रीबेस ऑपरेशन के परिणामस्वरूप मर्ज टकराव होता है, तो टकराव को हल करने के लिए सामान्य Git कमांड (उदाहरण के लिए, git rebase --continue ) का उपयोग करें।

repo sync के सफल संचालन के बाद, निर्दिष्ट परियोजनाओं में कोड अद्यतित है और रिमोट रिपॉजिटरी में कोड के साथ समन्वयित है।

यहां प्रमुख विकल्प दिए गए हैं. अधिक जानकारी के लिए repo help sync देखें:

  • -c : सर्वर से केवल वर्तमान मेनिफेस्ट शाखा प्राप्त करें।

  • -d : निर्दिष्ट परियोजनाओं को वापस मेनिफेस्ट संशोधन पर स्विच करें। यदि परियोजना वर्तमान में किसी विषय शाखा पर है तो यह सहायक है, लेकिन अस्थायी रूप से प्रकट संशोधन की आवश्यकता है।

  • -f : यदि कोई प्रोजेक्ट सिंक होने में विफल रहता है तो भी अन्य प्रोजेक्ट को सिंक करने के लिए आगे बढ़ें।

  • -j threadcount : तेजी से पूरा करने के लिए सिंक को थ्रेड में विभाजित करें। सुनिश्चित करें कि आप अपनी मशीन पर दबाव न डालें - कुछ सीपीयू अन्य कार्यों के लिए आरक्षित छोड़ दें। उपलब्ध सीपीयू की संख्या देखने के लिए, पहले चलाएं: nproc --all

  • -q : स्टेटस संदेशों को दबाकर चुपचाप चलाएं।

  • -s : वर्तमान मेनिफेस्ट में manifest-server तत्व द्वारा निर्दिष्ट ज्ञात अच्छे बिल्ड के साथ सिंक करें।

डालना

repo upload [project-list]

निर्दिष्ट परियोजनाओं के लिए, रेपो स्थानीय शाखाओं की तुलना पिछले रेपो सिंक के दौरान अद्यतन की गई दूरस्थ शाखाओं से करता है। रेपो आपको एक या अधिक शाखाओं का चयन करने के लिए कहता है जिन्हें समीक्षा के लिए अपलोड नहीं किया गया है।

चयनित शाखाओं पर सभी प्रतिबद्धताएं HTTPS कनेक्शन पर गेरिट को प्रेषित की जाती हैं। अपलोड प्राधिकरण को सक्षम करने के लिए आपको एक HTTPS पासवर्ड कॉन्फ़िगर करना होगा। HTTPS पर उपयोग करने के लिए एक नया उपयोगकर्ता नाम/पासवर्ड युग्म उत्पन्न करने के लिए पासवर्ड जेनरेटर पर जाएँ।

जब गेरिट अपने सर्वर पर ऑब्जेक्ट डेटा प्राप्त करता है, तो यह प्रत्येक कमिट को एक बदलाव में बदल देता है ताकि समीक्षक एक विशिष्ट कमिट पर टिप्पणी कर सकें। कई चेकपॉइंट कमिट को एक ही कमिट में संयोजित करने के लिए, अपलोड चलाने से पहले git rebase -i उपयोग करें।

यदि आप बिना तर्क के repo upload चलाते हैं, तो यह अपलोड करने के लिए परिवर्तनों के लिए सभी परियोजनाओं को खोजता है।

अपलोड किए जाने के बाद परिवर्तनों को संपादित करने के लिए, अपने स्थानीय कमिट को अपडेट करने के लिए git rebase -i या git commit --amend जैसे टूल का उपयोग करें। आपके संपादन पूर्ण होने के बाद:

  • सत्यापित करें कि अद्यतन शाखा वर्तमान में चेक आउट शाखा है।
  • परिवर्तन मिलान संपादक खोलने के लिए repo upload --replace PROJECT उपयोग करें।
  • श्रृंखला में प्रत्येक प्रतिबद्धता के लिए, कोष्ठक के अंदर गेरिट परिवर्तन आईडी दर्ज करें:
    # Replacing from branch foo
    [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
    [ 2829 ] ec18b4ba Update proto client to support patch set replacments
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.
    

अपलोड पूरा होने के बाद, परिवर्तनों में एक अतिरिक्त पैच सेट होता है।

यदि आप केवल वर्तमान में चेक आउट Git शाखा को अपलोड करना चाहते हैं, तो ध्वज --current-branch (या संक्षेप में --cbr ) का उपयोग करें।

अंतर

repo diff [project-list]

git diff उपयोग करके कमिट और वर्किंग ट्री के बीच उत्कृष्ट परिवर्तन दिखाता है।

डाउनलोड करना

repo download target change

समीक्षा प्रणाली से निर्दिष्ट परिवर्तन को डाउनलोड करता है और इसे आपके प्रोजेक्ट की स्थानीय कार्यशील निर्देशिका में उपलब्ध कराता है।

उदाहरण के लिए, अपने प्लेटफ़ॉर्म/बिल्ड निर्देशिका में परिवर्तन 23823 डाउनलोड करने के लिए:

repo download platform/build 23823

repo sync चलाने से repo download के साथ पुनर्प्राप्त कोई भी कमिट हटा दिया जाता है। या आप git checkout m/main का उपयोग करके दूरस्थ शाखा की जांच कर सकते हैं।

ध्यान दें: दुनिया भर के सभी सर्वरों में प्रतिकृति में देरी होती है, इसलिए जब गेरिट में वेब पर कोई परिवर्तन दिखाई देता है और जब repo download सभी उपयोगकर्ताओं के लिए परिवर्तन पा सकता है, तो इसके बीच थोड़ा सा मिररिंग अंतराल होता है।

सभी के लिए

repo forall [project-list] -c command

प्रत्येक प्रोजेक्ट में दिए गए शेल कमांड को निष्पादित करता है। निम्नलिखित अतिरिक्त पर्यावरण चर repo forall द्वारा उपलब्ध कराए गए हैं:

  • REPO_PROJECT को प्रोजेक्ट के अद्वितीय नाम पर सेट किया गया है।

  • REPO_PATH क्लाइंट के रूट से संबंधित पथ है।

  • REPO_REMOTE मेनिफेस्ट से रिमोट सिस्टम का नाम है।

  • REPO_LREV मेनिफेस्ट से संशोधन का नाम है, जिसे स्थानीय ट्रैकिंग शाखा में अनुवादित किया गया है। यदि आपको स्थानीय रूप से निष्पादित Git कमांड में मेनिफेस्ट संशोधन पास करने की आवश्यकता है तो इसका उपयोग करें।

  • REPO_RREV मेनिफेस्ट से संशोधन का नाम है, बिल्कुल वैसा ही जैसा मेनिफेस्ट में लिखा गया है।

विकल्प:

  • -c : निष्पादित करने के लिए आदेश और तर्क। कमांड का मूल्यांकन /bin/sh के माध्यम से किया जाता है और इसके बाद किसी भी तर्क को शेल स्थितीय पैरामीटर के रूप में पारित किया जाता है।

  • -p : निर्दिष्ट कमांड के आउटपुट से पहले प्रोजेक्ट हेडर दिखाएं। यह पाइप को कमांड के stdin, stdout, और sterr स्ट्रीम में बाइंड करके और सभी आउटपुट को एक सतत स्ट्रीम में पाइप करके प्राप्त किया जाता है जो एकल पेजर सत्र में प्रदर्शित होता है।

  • -v : कमांड द्वारा stderr को लिखे गए संदेश दिखाएं।

कांट - छांट

repo prune [project-list]

उन विषयों को प्रून्स (हटा देता है) जो पहले से ही मर्ज किए गए हैं।

शुरू

repo start
branch-name [project-list]

मेनिफेस्ट में निर्दिष्ट संशोधन से शुरू होकर, विकास के लिए एक नई शाखा शुरू होती है।

BRANCH_NAME तर्क उन परिवर्तनों का संक्षिप्त विवरण प्रदान करता है जो आप परियोजनाओं में करने का प्रयास कर रहे हैं। यदि आप नहीं जानते हैं, तो default नाम का उपयोग करने पर विचार करें।

project-list तर्क निर्दिष्ट करता है कि कौन सी परियोजनाएँ इस विषय शाखा में भाग लेती हैं।

नोट: एक अवधि ( . ) वर्तमान कार्यशील निर्देशिका में परियोजना के लिए आशुलिपि है।

स्थिति

repo status [project-list]

निर्दिष्ट प्रत्येक परियोजना में कार्यशील वृक्ष की तुलना स्टेजिंग क्षेत्र (सूचकांक) और इस शाखा (HEAD) पर नवीनतम प्रतिबद्धता से करता है। प्रत्येक फ़ाइल के लिए एक सारांश पंक्ति प्रदर्शित करता है जहाँ इन तीन स्थितियों के बीच अंतर है।

केवल वर्तमान शाखा की स्थिति देखने के लिए, repo status . . स्थिति की जानकारी परियोजना द्वारा सूचीबद्ध है। प्रोजेक्ट में प्रत्येक फ़ाइल के लिए, दो-अक्षर वाले कोड का उपयोग किया जाता है।

पहले कॉलम में, एक बड़ा अक्षर बताता है कि स्टेजिंग क्षेत्र अंतिम प्रतिबद्ध स्थिति से कैसे भिन्न है।

पत्र अर्थ विवरण
- कोई परिवर्तन नहीं होता है HEAD और इंडेक्स में समान
जोड़ा HEAD में नहीं, इंडेक्स में
एम संशोधित HEAD में, सूचकांक में संशोधित
डी हटाए गए HEAD में, इंडेक्स में नहीं
आर नाम बदलकर HEAD में नहीं, इंडेक्स में पथ बदला गया
सी कॉपी किया गया HEAD में नहीं, इंडेक्स में दूसरे से कॉपी किया गया
टी मोड बदल गया HEAD और इंडेक्स में समान सामग्री, मोड बदल गया
यू मर्ज ना किए गए HEAD और सूचकांक के बीच संघर्ष; समाधान आवश्यक

दूसरे कॉलम में, एक छोटा अक्षर बताता है कि कार्यशील निर्देशिका सूचकांक से कैसे भिन्न है।

पत्र अर्थ विवरण
- नया/अज्ञात इंडेक्स में नहीं, वर्क ट्री में
एम संशोधित सूचकांक में, कार्य वृक्ष में, संशोधित
डी हटाए गए इंडेक्स में, वर्क ट्री में नहीं

रेपो त्रुटियों को संभालना

git commit -a # Commit local changes first so they aren't lost.
repo start branch-name # Start the branch
git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start
repo upload .

त्रुटि repo: error: no branches ready for upload दिखाई देती है जब सत्र की शुरुआत में कमांड repo start नहीं चलाया गया था। पुनर्प्राप्त करने के लिए, आप कमिट आईडी की जांच कर सकते हैं, एक नई शाखा शुरू कर सकते हैं और फिर इसे मर्ज कर सकते हैं।