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

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 निर्देश के बारे में ज़्यादा जानकारी देखने के लिए, निर्देश को विकल्प के तौर पर बताएं:

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: सिंक की सुविधा को सभी थ्रेड के बीच बांटें तेज़ी से पूरा करने में मदद मिलती है. पक्का करें कि आपने अपनी मशीन को ज़्यादा लोड न किया हो - कुछ सीपीयू को अन्य कामों के लिए छोड़ दें. उपलब्ध सीपीयू की संख्या देखने के लिए, पहले nproc --all चलाएं.
  • -q: स्थिति बताने वाले मैसेज को दबाकर बिना किसी रुकावट के चलाएं.
  • -s: manifest-server एलिमेंट में बताए गए अच्छे बिल्ड के साथ सिंक करें मौजूदा मेनिफ़ेस्ट फ़ाइल में.

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

अपलोड करना

repo upload [project-list]

समीक्षा सर्वर पर बदलावों को अपलोड करता है. चुने गए प्रोजेक्ट के लिए, Repo, लोकल शाखाओं की तुलना उन रिमोट शाखाओं से करता है जिन्हें Repo के पिछले सिंक के दौरान अपडेट किया गया था. इसके बाद, 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: दिए गए कमांड के आउटपुट से पहले, प्रोजेक्ट हेडर दिखाएं. ऐसा करने के लिए, कमांड के 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 और इंडेक्स में एक जैसा
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 नहीं चलाया जा सका. इसे वापस पाने के लिए, कमिट आईडी देखें, नई शाखा शुरू करें, और फिर उसे मर्ज करें.