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
सभी प्रोजेक्ट की सूची देखने के लिए, Google Git रिपॉज़िटरी लेख पढ़ें. अगर आपने पहले ही प्रोजेक्ट डायरेक्ट्री पर नेविगेट कर लिया है, तो मौजूदा प्रोजेक्ट को दिखाने के लिए सिर्फ़ पीरियड का इस्तेमाल करें.
अपने लोकल वर्क एनवायरमेंट में किसी दूसरी ब्रांच पर स्विच करने के लिए:
git checkout BRANCH_NAME
मौजूदा ब्रांच की सूची देखने के लिए:
git branch
या
repo branches
इन दोनों कमांड से, मौजूदा ब्रांच की सूची मिलती है. इसमें मौजूदा ब्रांच के नाम से पहले तारा चिह्न (*) दिखता है.
फ़ाइलें स्टेज करना
डिफ़ॉल्ट रूप से, Git किसी प्रोजेक्ट में किए गए बदलावों को नोटिस करता है, लेकिन उन्हें ट्रैक नहीं करता. Git को अपने बदलावों को सेव करने के लिए, आपको उन बदलावों को कमिट में शामिल करने के लिए मार्क करना होगा या स्टेज उन बदलावों को.
बदलावों को स्टेज करने के लिए:
git add
यह कमांड, प्रोजेक्ट
डायरेक्ट्री में मौजूद फ़ाइलों या डायरेक्ट्री के लिए आर्ग्युमेंट स्वीकार करता है. `git add` का इस्तेमाल, सिर्फ़ Git रिपॉज़िटरी में फ़ाइलें जोड़ने के लिए नहीं किया जाता. इसका इस्तेमाल, फ़ाइल में किए गए बदलावों और मिटाई गई फ़ाइलों को स्टेज करने के लिए भी किया जा सकता है.git add
क्लाइंट का स्टेटस देखना
फ़ाइलों का स्टेटस देखने के लिए:
repo status
कमिट नहीं किए गए बदलाव देखने के लिए (लोकल बदलाव जिन्हें कमिट के लिए मार्क नहीं किया गया):
repo diff
कमिट किए गए बदलाव देखने के लिए (लोकल बदलाव जिन्हें कमिट के लिए मार्क किया गया
), पक्का करें कि आप प्रोजेक्ट डायरेक्ट्री में हों. इसके बाद, git
diff आर्ग्युमेंट के साथ cached चलाएं:
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
क्लाइंट मिटाने पर, वे सभी बदलाव हमेशा के लिए मिट जाते हैं जिन्हें आपने समीक्षा के लिए अपलोड नहीं किया है.