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

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

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

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]

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

विकल्प:

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

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

साथ-साथ करना

repo sync [project-list]

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

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

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

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

    git remote update
    git rebase origin/branch
    

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

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

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

यहाँ प्रमुख विकल्प हैं। अधिक के लिए repo help sync देखें:

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

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

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

  • -j threadcount : तेजी से पूरा करने के लिए सिंक को थ्रेड्स में विभाजित करें। सुनिश्चित करें कि आप अपनी मशीन पर हावी न हों - कुछ सीपीयू को अन्य कार्यों के लिए आरक्षित छोड़ दें। उपलब्ध CPU की संख्या देखने के लिए, पहले रन करें: 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/master का उपयोग करके दूरस्थ शाखा देख सकते हैं।

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

सभी के लिए

repo forall [project-list] -c command

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

  • REPO_PROJECT प्रोजेक्ट के विशिष्ट नाम पर सेट है।

  • REPO_PATH क्लाइंट के रूट के सापेक्ष पथ है।

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

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

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

विकल्प:

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

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

  • -v : संदेश दिखाएं जो कमांड stderr को लिखता है।

छटना

repo prune [project-list]

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

प्रारंभ

repo start
branch-name [project-list]

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

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

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

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

दर्जा

repo status [project-list]

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

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

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

पत्र अर्थ विवरण
- कोई परिवर्तन नहीं होता है हेड और इंडेक्स में समान
जोड़ा हेड में नहीं, इंडेक्स में
एम संशोधित 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 कमांड नहीं चलाया गया था। पुनर्प्राप्त करने के लिए, आप प्रतिबद्ध आईडी की जांच कर सकते हैं, एक नई शाखा शुरू कर सकते हैं और फिर इसे मर्ज कर सकते हैं।