रेपो कमांड के बारे में जानकारी

Repo एक से ज़्यादा डेटा स्टोर करने की जगह को आसान बनाकर, Git को बेहतर बनाता है. किसी Repo और Git के बीच संबंध की व्याख्या के लिए, देखें सोर्स कंट्रोल टूल. ज़्यादा के लिए Repo पर जानकारी के लिए, रेपो रीडमी

रेपो का इस्तेमाल इस तरह से होता है:

repo command options

वैकल्पिक एलिमेंट ब्रैकेट [] में दिखाए जाते हैं. उदाहरण के लिए, किसी project-list को तर्क के रूप में. project-list बताया जा सकता है नाम या लोकल सोर्स डायरेक्ट्री के पाथ की सूची के तौर पर प्रोजेक्ट:

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

सहायता

repo help

repo निर्देश के बारे में मदद देता है. यहाँ पर दी गई जानकारी खास रेपो कमांड, जिसमें किसी कमांड को विकल्प के तौर पर शामिल किया गया है:

repo help command

उदाहरण के लिए, नीचे दिया गया निर्देश, मैसेज की जानकारी और विकल्पों की सूची देता है init कमांड के लिए:

repo help init

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

repo command --help

जैसे:

repo init --help
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

Init

repo init -u url [options]

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

विकल्प:

  • -u: वह यूआरएल डालें जिससे मेनिफ़ेस्ट डेटा स्टोर करने की जगह को फिर से हासिल करना है. सामान्य मेनिफ़ेस्ट https://android.googlesource.com/platform/manifest पर मिला.

  • -m: डेटा स्टोर करने की जगह में मेनिफ़ेस्ट फ़ाइल चुनें. अगर कोई मेनिफ़ेस्ट नाम नहीं है चुना गया है, तो डिफ़ॉल्ट default.xml है.

  • -b: एक संशोधन चुनें, जो एक खास manifest-branch हो.

सिंक करें

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 स्थानीय कारोबार में चेक-आउट की गई मौजूदा शाखा है प्रोजेक्ट डायरेक्ट्री में मौजूद डेटा. अगर स्थानीय ब्रांच, रिमोट में किसी ब्रांच को ट्रैक नहीं कर रही है रिपॉज़िटरी का इस्तेमाल करता है, तो प्रोजेक्ट के लिए कोई सिंक नहीं होता.

repo sync के काम करने के बाद, बताए गए प्रोजेक्ट का कोड यह होगा अप-टू-डेट है और रिमोट रिपॉज़िटरी में मौजूद कोड से सिंक है.

मुख्य विकल्प:

  • -c: सर्वर से सिर्फ़ मौजूदा मेनिफ़ेस्ट ब्रांच फ़ेच करें.
  • -d: तय किए गए प्रोजेक्ट को वापस मेनिफ़ेस्ट में हुए बदलाव पर ले जाएं. यह विकल्प है यह तब मददगार होता है, जब प्रोजेक्ट किसी विषय की ब्रांच पर हो, लेकिन मेनिफ़ेस्ट में बदलाव किया गया हो कुछ समय के लिए इसकी ज़रूरत होती है.
  • -f: अन्य प्रोजेक्ट को सिंक करें, भले ही कोई प्रोजेक्ट सिंक न हो रहा हो.
  • threadcount: सिंक की सुविधा को सभी थ्रेड के बीच बांटें तेज़ी से पूरा करने में मदद मिलती है. पक्का करें कि आपके मशीन पर ज़्यादा काम न हो - कुछ सीपीयू (CPU) इस्तेमाल करें दूसरे टास्क के लिए रिज़र्व किया गया. उपलब्ध सीपीयू (CPU) की संख्या देखने के लिए, पहले चलाएं nproc --all.
  • -q: स्थिति बताने वाले मैसेज को दबाकर बिना किसी रुकावट के चलाएं.
  • -s: manifest-server एलिमेंट में बताए गए अच्छे बिल्ड के साथ सिंक करें मौजूदा मेनिफ़ेस्ट फ़ाइल में.

ज़्यादा विकल्पों के लिए, repo help sync चलाएं.

अपलोड करें

repo upload [project-list]

समीक्षा सर्वर पर बदलाव अपलोड करता है. बताए गए प्रोजेक्ट के लिए, Repo की तुलना पिछली बार रेपो सिंक के दौरान अपडेट की गई रिमोट ब्रांच की स्थानीय ब्रांच. रेपो की मदद से, आपको एक या एक से ज़्यादा ऐसे ब्रांच चुनने का विकल्प मिलता है जिन्हें समीक्षा के लिए अपलोड किया गया.

चयनित ब्रांच पर सभी कमिट को फिर से एचटीटीपीएस कनेक्शन. अपलोड चालू करने के लिए आपको एक एचटीटीपीएस पासवर्ड कॉन्फ़िगर करना होगा अनुमति. एचटीटीपीएस पर इस्तेमाल करने के लिए, नया उपयोगकर्ता नाम/पासवर्ड का जोड़ा जनरेट करने के लिए, तो पासवर्ड जनरेटर.

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

अगर repo upload को बिना आर्ग्युमेंट के चलाया जाता है, तो यह इनके लिए सभी प्रोजेक्ट खोजता है अपलोड करने के लिए बदलाव.

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

  • पुष्टि करें कि अपडेट की गई ब्रांच, वह ब्रांच है जिससे चेक आउट किया गया है.
  • 'बदलाव से मैच करने वाला एडिटर' खोलने के लिए, repo upload --replace PROJECT का इस्तेमाल करें.
  • सीरीज़ में हर कमिट के लिए, ब्रैकेट के अंदर Gerrit का बदलाव आईडी डालें:

    # Replacing from branch foo
    [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
    [ 2829 ] ec18b4ba Update proto client to support patch set replacements
    # 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 को अपने platform/build डायरेक्ट्री:

repo download platform/build 23823

repo sync को चलाने पर, repo download से हासिल किए गए सभी कमिट हट जाते हैं. या आप git checkout m/main का इस्तेमाल करके, रिमोट ब्रांच को देख सकते हैं.

सभी के लिए

repo forall [project-list] -c command

हर प्रोजेक्ट में दिए गए शेल कमांड को एक्ज़ीक्यूट करता है. नीचे दी गई अतिरिक्त जानकारी एनवायरमेंट वैरिएबल repo forall से उपलब्ध कराए गए हैं:

  • REPO_PROJECT को प्रोजेक्ट के खास नाम पर सेट किया गया है.
  • REPO_PATH, क्लाइंट के रूट के मुताबिक पाथ है.
  • मेनिफ़ेस्ट से रिमोट सिस्टम का नाम REPO_REMOTE है.
  • REPO_LREV, मेनिफ़ेस्ट से किए गए बदलाव का नाम है, जिसका अनुवाद स्थानीय ट्रैकिंग ब्रांच का पता. अगर आपको मेनिफ़ेस्ट को पास करना है, तो इस वैरिएबल का इस्तेमाल करें स्थानीय रूप से चलाए गए Git निर्देश में संशोधन करें.
  • REPO_RREV, मेनिफ़ेस्ट में किए गए बदलाव का नाम है, जैसा कि लिखा गया है मेनिफ़ेस्ट फ़ाइल में मौजूद है.

विकल्प:

  • -c: लागू किए जाने वाले निर्देश और आर्ग्युमेंट. निर्देश का आकलन इसके ज़रिए किया जाता है /bin/sh और इसके बाद सभी आर्ग्युमेंट को शेल पोज़िशनल के तौर पर पास किया जाता है पैरामीटर का इस्तेमाल करें.
  • -p: बताए गए निर्देश के आउटपुट से पहले प्रोजेक्ट हेडर दिखाएं. यह है कमांड के एसटीडीन, स्टडआउट, और स्टरर स्ट्रीम से पाइप को बाइंड करके हासिल किया जाता है. सभी आउटपुट को किसी एक पेज वाली स्ट्रीम में बदलना सत्र.
  • -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 और इंडेक्स में एक जैसा
A जोड़ा गया HEAD में नहीं, इंडेक्स में है
सोम बदला गया HEAD में, इंडेक्स में बदला गया
D मिटाया गया कॉन्टेंट HEAD में, इंडेक्स में नहीं है
R नाम बदला गया HEAD में नहीं, इंडेक्स में पाथ बदला गया
C कॉपी किया गया HEAD में नहीं, इंडेक्स में किसी दूसरे से कॉपी किया गया
T मोड बदला गया HEAD और इंडेक्स में एक ही कॉन्टेंट है, मोड बदला गया
U अनमर्ज किया गया HEAD और इंडेक्स के बीच टकराव; रिज़ॉल्यूशन ज़रूरी है

दूसरे कॉलम में, अंग्रेज़ी के छोटे अक्षर से पता चलता है कि वर्किंग डायरेक्ट्री किस तरह अलग है इंडेक्स करना.

पत्र मतलब ब्यौरा
- नया/अज्ञात इंडेक्स में नहीं, वर्क ट्री में
m बदला गया इंडेक्स में, वर्क ट्री में, बदलाव किया गया
d मिटाया गया कॉन्टेंट इंडेक्स में है, वर्क ट्री में नहीं है

रेपो की गड़बड़ियां मैनेज करना

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 नहीं चलाया जा सका. रिकवर करने के लिए, यह देखें कमिट आईडी पर क्लिक करें, नई ब्रांच शुरू करें और फिर उसे मर्ज करें.