Android कोड के साथ काम करने के लिए, Git (ओपन-सोर्स वाला वर्शन कंट्रोल सिस्टम) और Repo (Google का बनाया गया एक रिपॉज़िटरी मैनेजमेंट टूल, जो Git के साथ काम करता है) का इस्तेमाल करना ज़रूरी है. सोर्स कंट्रोल टूल देखें. इससे आपको रिपो और Git के बीच के संबंध के बारे में जानकारी मिलेगी. साथ ही, हर टूल के लिए सहायक दस्तावेज़ों के लिंक भी मिलेंगे.
फ़्लो
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
क्लाइंट मिटाने पर, उन सभी बदलावों को हमेशा के लिए मिटा दिया जाता है जिन्हें आपने समीक्षा के लिए अपलोड नहीं किया है.