स्रोत नियंत्रण वर्कफ़्लो

एंड्रॉइड कोड के साथ काम करने के लिए Git (एक ओपन-सोर्स संस्करण नियंत्रण प्रणाली) और Repo (एक Google-निर्मित रिपॉजिटरी प्रबंधन टूल जो Git के शीर्ष पर चलता है) का उपयोग करना आवश्यक है। रेपो और गिट के बीच संबंधों की व्याख्या और प्रत्येक टूल के लिए सहायक दस्तावेज़ के लिंक के लिए स्रोत नियंत्रण उपकरण देखें।

प्रवाह

Android विकास में निम्नलिखित बुनियादी वर्कफ़्लो शामिल है:

  1. repo start उपयोग करके एक नई विषय शाखा प्रारंभ करें।
  2. फ़ाइलें संपादित करें.
  3. git add उपयोग करके स्टेज परिवर्तन।
  4. git commit उपयोग करके परिवर्तन प्रतिबद्ध करें।
  5. repo upload उपयोग करके समीक्षा सर्वर पर परिवर्तन अपलोड करें।

कार्य

एंड्रॉइड कोड रिपॉजिटरी में 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 sync

चयनित परियोजनाओं के लिए फ़ाइलों को सिंक्रनाइज़ करने के लिए:

repo sync PROJECT0 PROJECT1 ... PROJECTN

विषय शाखाएँ बनाना

जब भी आप कोई बदलाव शुरू करें, जैसे कि जब आप किसी बग या नई सुविधा पर काम शुरू करते हैं, तो अपने स्थानीय कार्य परिवेश में एक विषय शाखा शुरू करें। विषय शाखा मूल फ़ाइलों की प्रतिलिपि नहीं है ; यह एक विशेष प्रतिबद्धता के लिए एक संकेतक है, जो स्थानीय शाखाएं बनाना और उनके बीच स्विच करना एक हल्का ऑपरेशन बनाता है। शाखाओं का उपयोग करके, आप अपने काम के एक पहलू को दूसरे से अलग कर सकते हैं। विषय शाखाओं का उपयोग करने के बारे में एक दिलचस्प लेख के लिए, विषय शाखाओं को अलग करना देखें।

रेपो का उपयोग करके विषय शाखा शुरू करने के लिए, प्रोजेक्ट पर जाएँ और चलाएँ:

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/PROJECT
git diff --cached

परिवर्तन के लिए प्रतिबद्ध होना

एक कमिट Git में संशोधन नियंत्रण की मूल इकाई है और इसमें संपूर्ण प्रोजेक्ट के लिए निर्देशिका संरचना और फ़ाइल सामग्री का एक स्नैपशॉट शामिल होता है। Git में कमिट बनाने के लिए इस कमांड का उपयोग करें:

git commit

प्रतिबद्ध संदेश के लिए पूछे जाने पर, AOSP को सबमिट किए गए परिवर्तनों के लिए एक संक्षिप्त (लेकिन उपयोगी) संदेश प्रदान करें। यदि आप कमिट संदेश नहीं जोड़ते हैं, तो कमिट विफल हो जाता है।

गेरिट में परिवर्तन अपलोड हो रहे हैं

नवीनतम संशोधन पर अद्यतन करें, फिर परिवर्तन अपलोड करें:

repo sync
repo upload

ये आदेश आपके द्वारा किए गए परिवर्तनों की एक सूची लौटाते हैं और आपको समीक्षा सर्वर पर अपलोड करने के लिए शाखाओं का चयन करने के लिए प्रेरित करते हैं। यदि केवल एक शाखा है, तो आपको एक साधारण y/n संकेत दिखाई देगा।

समन्वयन विवादों का समाधान करना

यदि repo sync कमांड सिंक विरोध लौटाता है:

  1. वे फ़ाइलें देखें जो मर्ज नहीं की गई हैं (स्थिति कोड = यू)।
  2. आवश्यकतानुसार संघर्ष क्षेत्रों को संपादित करें।
  3. प्रासंगिक प्रोजेक्ट निर्देशिका में बदलें. प्रभावित फ़ाइलें जोड़ें और प्रतिबद्ध करें, फिर परिवर्तनों को पुनः आधार बनाएं:
    git add .
    git commit
    git rebase --continue
    
  4. रिबेस पूरा होने के बाद, संपूर्ण सिंक फिर से शुरू करें:
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

ग्राहकों की सफाई

गेरिट में परिवर्तनों को मर्ज करने के बाद, अपनी स्थानीय कार्यशील निर्देशिका को अपडेट करें, फिर पुरानी विषय शाखाओं को सुरक्षित रूप से हटाने के लिए repo prune उपयोग करें:

repo sync
repo prune

ग्राहकों को हटाया जा रहा है

क्योंकि सभी स्थिति की जानकारी आपके क्लाइंट में संग्रहीत है, आपको केवल अपने फ़ाइल सिस्टम से निर्देशिका को हटाने की आवश्यकता है:

rm -rf WORKING_DIRECTORY

किसी क्लाइंट को हटाने से आपके द्वारा समीक्षा के लिए अपलोड नहीं किए गए सभी परिवर्तन स्थायी रूप से हट जाते हैं