Android कोड के साथ काम करने के लिए, Git की ज़रूरत होती है. यह ओपन-सोर्स वर्शन कंट्रोल सिस्टम है. साथ ही, Repo की भी ज़रूरत होती है. यह Google का बनाया हुआ रिपॉज़िटरी मैनेजमेंट टूल है, जो Git पर काम करता है. Repo और Git के बीच के संबंध के बारे में जानने के लिए, सोर्स कंट्रोल टूल लेख पढ़ें. इसमें हर टूल के बारे में ज़्यादा जानकारी देने वाले दस्तावेज़ों के लिंक भी दिए गए हैं.
Flow
Android डेवलपमेंट में, यह बुनियादी वर्कफ़्लो शामिल होता है:
repo startका इस्तेमाल करके, कोई नई विषय शाखा शुरू करें.- फ़ाइलों में बदलाव करें.
git addका इस्तेमाल करके स्टेज में बदलाव करना.git commitका इस्तेमाल करके बदलावों को लागू करें.repo uploadका इस्तेमाल करके, समीक्षा सर्वर पर बदलाव अपलोड करें.
Tasks
Android कोड रिपॉज़िटरी में Git और Repo का इस्तेमाल करने के लिए, ये सामान्य टास्क पूरे करने होते हैं.
| निर्देश | ब्यौरा |
|---|---|
repo init |
यह कुकी, नए क्लाइंट को शुरू करती है. |
repo sync |
यह कुकी, क्लाइंट को रिपॉज़िटरी के साथ सिंक करती है. |
repo start |
इससे नई ब्रांच शुरू होती है. |
repo status |
मौजूदा ब्रांच का स्टेटस दिखाता है. |
repo upload |
यह कुकी, समीक्षा सर्वर पर बदलाव अपलोड करती है. |
git add |
फ़ाइलों को स्टेज करता है. |
git commit |
स्टेज की गई फ़ाइलों को कमिट करता है. |
git branch |
मौजूदा ब्रांच दिखाता है. |
git branch [branch] |
इससे नई टॉपिक ब्रांच बनती है. |
git checkout [branch] |
HEAD को बताई गई ब्रांच पर स्विच करता है. |
git merge [branch] |
[branch] को मौजूदा ब्रांच में मर्ज करता है. |
git diff |
इससे स्टेज नहीं किए गए बदलावों का अंतर दिखता है. |
git diff --cached |
इससे स्टेज किए गए बदलावों का अंतर दिखता है. |
git log |
मौजूदा ब्रांच का इतिहास दिखाता है. |
git log m/[codeline].. |
पुश नहीं की गई कमिट दिखाता है. |
सोर्स को डाउनलोड करने के लिए Repo का इस्तेमाल करने के बारे में जानने के लिए, सोर्स डाउनलोड करना और Repo कमांड रेफ़रंस देखें.
क्लाइंट खातों को सिंक करना
सभी उपलब्ध प्रोजेक्ट के लिए फ़ाइलों को सिंक करने के लिए:
repo sync
चुने गए प्रोजेक्ट की फ़ाइलों को सिंक करने के लिए:
repo sync PROJECT0 PROJECT1 ... PROJECTN
विषय के हिसाब से ब्रांच बनाना
जब भी कोई बदलाव करना हो, तब अपने लोकल वर्क एनवायरमेंट में कोई टॉपिक ब्रांच शुरू करें. जैसे, किसी बग या नई सुविधा पर काम शुरू करते समय. टॉपिक ब्रांच, ओरिजनल फ़ाइलों की कॉपी नहीं होती. यह किसी खास कमिट का पॉइंटर होता है. इससे लोकल ब्रांच बनाना और उनके बीच स्विच करना आसान हो जाता है. ब्रांच का इस्तेमाल करके, अपने काम के किसी एक पहलू को दूसरे पहलुओं से अलग किया जा सकता है. विषय की शाखाओं का इस्तेमाल करने के बारे में दिलचस्प लेख पढ़ने के लिए, विषय की शाखाओं को अलग करना लेख पढ़ें.
Repo का इस्तेमाल करके किसी विषय की ब्रांच शुरू करने के लिए, प्रोजेक्ट पर जाएं और यह कमांड चलाएं:
repo start BRANCH_NAME .
ट्रेलिंग पीरियड ( .) से, मौजूदा वर्किंग डायरेक्ट्री में मौजूद प्रोजेक्ट के बारे में पता चलता है.
यह पुष्टि करने के लिए कि नई ब्रांच बन गई है:
repo status .
विषय के हिसाब से ब्रांच का इस्तेमाल करना
किसी ब्रांच को किसी प्रोजेक्ट के लिए असाइन करने के लिए:
repo start BRANCH_NAME PROJECT_NAME
सभी प्रोजेक्ट की सूची के लिए, android.googlesource.com पर जाएं. अगर आपने पहले ही प्रोजेक्ट डायरेक्ट्री पर नेविगेट कर लिया है, तो मौजूदा प्रोजेक्ट को दिखाने के लिए, सिर्फ़ एक अवधि का इस्तेमाल करें.
अपने लोकल वर्क एनवायरमेंट में किसी दूसरी ब्रांच पर स्विच करने के लिए:
git checkout BRANCH_NAME
मौजूदा ब्रांच की सूची देखने के लिए:
git branch
या
repo branches
इन दोनों कमांड से, मौजूदा ब्रांच के नाम के साथ-साथ मौजूदा ब्रांच के नाम से पहले तारे के निशान (*) के साथ मौजूदा ब्रांच की सूची दिखती है.
स्टेजिंग फ़ाइलें
डिफ़ॉल्ट रूप से, Git आपके प्रोजेक्ट में किए गए बदलावों को सूचना देता है, लेकिन उन्हें ट्रैक नहीं करता. Git को अपने बदलावों को बनाए रखने के लिए, आपको उन बदलावों को मार्क करना होगा या कमिट में शामिल करने के लिए स्टेज करना होगा.
बदलावों को स्टेज करने के लिए:
git add
यह कमांड, प्रोजेक्ट डायरेक्ट्री में मौजूद फ़ाइलों या डायरेक्ट्री के लिए आर्ग्युमेंट स्वीकार करती है. नाम के बावजूद, git add सिर्फ़ Git रिपॉज़िटरी में फ़ाइलें नहीं जोड़ता है. इसका इस्तेमाल, फ़ाइलों में किए गए बदलावों को स्टेज करने और उन्हें मिटाने के लिए भी किया जा सकता है.
क्लाइंट खाते का स्टेटस देखना
फ़ाइलों की स्थिति की सूची बनाने के लिए:
repo status
ऐसे स्थानीय बदलाव देखने के लिए जिन्हें कमिट करने के लिए मार्क नहीं किया गया है:
repo diff
जिन बदलावों को लागू किया जा चुका है उन्हें देखने के लिए (ऐसे बदलाव जिन्हें लागू करने के लिए मार्क किया गया है), पक्का करें कि आप प्रोजेक्ट डायरेक्ट्री में हों. इसके बाद, cached आर्ग्युमेंट के साथ git
diff चलाएं:
cd ~/WORKING_DIRECTORY/PROJECTgit diff --cached
बदलावों को लागू करना
कमिट, Git में वर्शन कंट्रोल की बुनियादी इकाई होती है. इसमें पूरे प्रोजेक्ट के लिए, डायरेक्ट्री स्ट्रक्चर और फ़ाइल के कॉन्टेंट का स्नैपशॉट शामिल होता है. Git में कमिट बनाने के लिए, इस कमांड का इस्तेमाल करें:
git commit
जब कमिट मैसेज के लिए कहा जाए, तब AOSP में सबमिट किए गए बदलावों के लिए छोटा (लेकिन काम का) मैसेज दें. कमिट मैसेज न जोड़ने पर, कमिट नहीं हो पाता.
लेख पढ़ेंGerrit में बदलाव अपलोड किए जा रहे हैं
सबसे नए वर्शन पर अपडेट करें. इसके बाद, बदलाव अपलोड करें:
repo syncrepo upload
इन कमांड से, किए गए बदलावों की सूची मिलती है. साथ ही, आपको समीक्षा सर्वर पर अपलोड करने के लिए
ब्रांच चुनने के लिए कहा जाता है. अगर सिर्फ़ एक शाखा है, तो आपको सामान्य y/n प्रॉम्प्ट दिखेगा.
सिंक करने से जुड़ी समस्याओं को हल करना
अगर repo sync कमांड से सिंक करने से जुड़ी समस्याएं दिखती हैं, तो:
- उन फ़ाइलों को देखें जिन्हें मर्ज नहीं किया गया है (स्टेटस कोड = U).
- टकराव वाले क्षेत्रों में ज़रूरत के मुताबिक बदलाव करें.
- उस प्रोजेक्ट डायरेक्ट्री पर जाएं जिससे जुड़ी जानकारी आपको देखनी है. असर डालने वाली फ़ाइलों को जोड़ें और कमिट करें. इसके बाद, बदलावों को फिर से बेस करें:
git add .git commitgit rebase --continue - रीबेस की प्रोसेस पूरी होने के बाद, सिंक की पूरी प्रोसेस फिर से शुरू करें:
repo sync PROJECT0 PROJECT1 ... PROJECTN
क्लाइंट को हटाना
Gerrit में बदलावों को मर्ज करने के बाद, अपनी लोकल वर्किंग डायरेक्ट्री अपडेट करें. इसके बाद, पुरानी हो चुकी टॉपिक ब्रांच को सुरक्षित तरीके से हटाने के लिए, repo prune का इस्तेमाल करें:
repo syncrepo prune
क्लाइंट मिटाना
राज्य की सभी जानकारी आपके क्लाइंट में सेव होती है. इसलिए, आपको सिर्फ़ अपने फ़ाइल सिस्टम से डायरेक्ट्री मिटानी होगी:
rm -rf WORKING_DIRECTORY
क्लाइंट खाते को मिटाने से, वे सभी बदलाव हमेशा के लिए मिट जाते हैं जिन्हें आपने समीक्षा के लिए अपलोड नहीं किया है.