योगदान करने का तरीका

योगदान देने वाले के लाइसेंस के लिए कानूनी समझौते (सीएलए)

इससे पहले कि हम आपके कोड पैच स्वीकार कर सकें, आपको इनमें से किसी एक को सबमिट करना होगा या कॉर्पोरेट कॉन्ट्रिब्यूटर के लाइसेंस का समझौता (सीएलए):

  • अगर आप मूल सोर्स कोड लिखने वाले व्यक्ति हैं और आपको यकीन है कि अगर आपके पास बौद्धिक संपत्ति का मालिकाना हक है, तो व्यक्तिगत सीएलए.
  • अगर आप किसी कंपनी में काम करते हैं, तो आपकी कंपनी को कॉर्पोरेट सीएलए सबमिट करना होगा यह बताएं कि आपके पास इस क्लाइंट लाइब्रेरी में अपना काम करने की अनुमति है.

सही सीएलए को ऐक्सेस करने के लिए, ऊपर दिए गए दो लिंक में से किसी एक को फ़ॉलो करें और उस पर हस्ताक्षर करने और उसे वापस करने से जुड़े निर्देश. ईमेल मिलने के बाद, हम आपको इसमें जोड़ सकते हैं को जोड़ा जा सकता है.

पैच सबमिट करने के बारे में खास जानकारी

इस प्रोजेक्ट में कोड जोड़ने के लिए, यह सामान्य तरीका अपनाएं:

  1. ऊपर बताए गए तरीके से, योगदान देने वाले के लाइसेंस के समझौते पर हस्ताक्षर करें.
  2. हमारे चर्चा समूह में शामिल हों.
  3. अपना डेवलपमेंट एनवायरमेंट सेट अप करें.
  4. अपने हर बदलाव को किसी समस्या (गड़बड़ी की रिपोर्ट या सुविधा) से जोड़ें अनुरोध) को हमारे GitHub समस्या ट्रैकर में देखें. अगर कोई समस्या पहले से नहीं है, तो एक नई समस्या बनाएं और उसे खुद को असाइन करें.
  5. कोड देखें, codereview.appspot.com पर नई समस्या बनाएं, और कोड की समीक्षा करने की प्रोसेस पूरी करें. इन सभी प्रक्रियाओं के लिए विस्तृत निर्देश नीचे दिए गए हैं.
  6. कोड की समीक्षा होने और मंज़ूरी मिलने के बाद, कोड के लिए पुष्टि करें. अगर आप आधिकारिक योगदान देने वाले व्यक्ति नहीं हैं, तो योगदान देने वाला व्यक्ति आपके बदलाव को आधिकारिक रिपॉज़िटरी (डेटा स्टोर करने की जगह) में शामिल कर देता है.

हम इन टूल और प्रोसेस का इस्तेमाल करते हैं:

  • हम अपने वर्शन कंट्रोल सिस्टम के तौर पर, Git का इस्तेमाल करते हैं.
  • हम बिल्ड सिस्टम के लिए Maven का इस्तेमाल करते हैं. एक बाइनरी डिस्ट्रिब्यूशन सिस्टम होता है.
  • हम कोड के लिए codereview.appspot.com का इस्तेमाल करते हैं समीक्षाएँ. (लेकिन ध्यान दें कि codereview.appspot.com टूल में, "issue" शब्द इसका मतलब कोड की समीक्षा के अनुरोध से है, जबकि GitHub Issue Tracker में एक "समस्या" है एक है सुविधा का अनुरोध या गड़बड़ी की रिपोर्ट देखें.)

अगर आप Eclipse डेवलपर हैं, तो प्रोजेक्ट के हिसाब से कोड फ़ॉर्मैटिंग का इस्तेमाल करें जो .settings डायरेक्ट्री में मौजूद होती है, जिसे Eclipse के ज़रिए अपने-आप प्रोसेस किया जाता है.

डेवलपमेंट एनवायरमेंट सेट अप करना

ज़रूरी शर्तें

  1. Java 6 इंस्टॉल करें. आपको अपना JAVA_HOME सेट करना पड़ सकता है वैरिएबल.
  2. Maven इंस्टॉल करें. (यह दस्तावेज़ यह मान लिया है कि आपको Maven निर्देशों के बारे में बुनियादी जानकारी है.)
  3. ज़रूरी नहीं: Android SDK टूल इंस्टॉल करें और अपने ANDROID_HOME वैरिएबल को Android के लिए इंस्टॉल करने की जगह पर सेट करें.
  4. Git इंस्टॉल करें.

Git सेट अप करना

अपना डिफ़ॉल्ट डिसप्ले नेम और ईमेल पता सेट करने के लिए, git config कमांड का इस्तेमाल करें:

git config --global user.name "YOUR NAME"
git config --global user.email "YOUR EMAIL ADDRESS"

Git से GitHub की मदद से पुष्टि करना

GitHub से मिले कोड की जांच करने के लिए, आपको एचटीटीपी या एसएसएच का इस्तेमाल करने वाला GitHub. जारी रखने से पहले नीचे दिए गए निर्देशों के हिसाब से, GitHub पढ़ें पाने के तरीकों के बारे में निर्देश एचटीटीपीएस या एसएसएच क्लोनिंग से शुरू होता है. अगर आपको Git के बारे में ज़्यादा जानना है, तो आम तौर पर, Pro Git एक अच्छा संसाधन है.

कोड की जांच की जा रही है

एचटीटीपीएस का इस्तेमाल करना

"Master" डेवलपमेंट में लाइब्रेरी रिपॉज़िटरी देखने के लिए ब्रांच, निम्न कमांड चलाएं:

git clone https://github.com/google/google-api-java-client.git

एसएसएच का इस्तेमाल करना

"Master" डेवलपमेंट में लाइब्रेरी रिपॉज़िटरी देखने के लिए ब्रांच, बनाएं पक्का GitHub रिपॉज़िटरी को लिखने का ऐक्सेस है, इसके बाद नीचे दिया गया कमांड चलाएं:

git clone git@github.com:google/google-api-java-client.git

किसी दूसरी ब्रांच पर जाने के लिए, जैसे कि 1.12:

git checkout --track origin/1.12

मास्टर ब्रांच पर वापस स्विच करने के लिए:

git checkout master

GitHub रिपॉज़िटरी से नए बदलाव लाने और अपने लोकल स्टोर में अपडेट करने के लिए नई प्रतिबद्धता के लिए काम करने वाला ट्री:

git pull

Maven

Google Play services इंस्टॉल करें

पहली बार प्रोजेक्ट सेट अप करते समय, आपको google-play-services.jar फ़ाइल में मौजूद है. ऐसा करने के लिए:

  1. Eclipse लॉन्च करें और Window > चुनें Android SDK Manager या android चलाएं पर क्लिक करें.
  2. पैकेज सूची में नीचे तक स्क्रॉल करें और Extras > चुनें Google Play सेवाएं.
mvn install:install-file \
           -Dfile=$ANDROID_HOME/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar \
           -DgroupId=com.google.android.google-play-services \
           -DartifactId=google-play-services \
           -Dversion=1 \
           -Dpackaging=jar

प्रोजेक्ट कंपाइल करें

mvn clean install

Maven, स्थानीय डेटा स्टोर करने की जगह में कंपाइल की गई बाइनरी इंस्टॉल करता है (उदाहरण के लिए, ~/.m2/डेटा स्टोर करने की जगह). यह फ़ेच करने से पहले, डेटा स्टोर करने की उस जगह में बाइनरी खोजता है Maven सेंट्रल रिपॉज़िटरी से.

ध्यान दें: यह लाइब्रेरी google-http-java-client पर निर्भर करती है और google-oauth-java-client. अभी तक रिलीज़ नहीं हुई तीनों लाइब्रेरी के नए वर्शन पर काम करते समय Maven सेंट्रल में, आपको उन्हें इस क्रम में कंपाइल करना होगा:

  1. google-http-java-client
  2. google-oauth-java-client
  3. google-api-java-client इस क्रम में कंपाइल करने पर यह पक्का होता है कि Maven, कंपाइल की गई बाइनरी डिपेंडेंट लाइब्रेरी कंपाइलेशन.

कोड की समीक्षा करने की प्रोसेस

upload.py स्क्रिप्ट डाउनलोड की जा रही है

upload.py स्क्रिप्ट डाउनलोड करें और वैकल्पिक रूप से इसे अपने PATH में जोड़ें.

जब आप पहली बार upload.py चलाते हैं, तो यह आपसे ऐप्लिकेशन-विशिष्ट पासवर्ड:

Email (login for uploading to codereview.appspot.com): your_email_address@yourdomain.com
Password for your_email_address@yourdomain.com: 

आपके कोड को समीक्षा के लिए तैयार किया जा रहा है

कोड को समीक्षा के लिए भेजने से पहले, आपको पीछे की ओर पकड़ने के लिए Clirr चलाना होगा आपके कोड में सही से काम नहीं करता. अगर किसी गड़बड़ी की शिकायत की जाती है, तो आपको उन्हें ठीक करें या clirr-ignored-differences.xml फ़ाइल को अपडेट करें.

mvn -q clirr:check

कोड में मौजूद गड़बड़ियों को पहचानने के लिए, आपको FindBugs टूल भी चलाना होगा. अगर कोई गड़बड़ी दिखती है हैं तो आपको उन्हें ठीक करना होगा या findbugs-excluded.xml को अपडेट करना होगा फ़ाइल से लिए जाते हैं. (ध्यान दें कि FindBugs बहुत धीमा काम करता है.)

mvn findbugs:check

जब आपका बदलाव सभी टेस्ट में पास हो जाए, तो बदलाव को इंडेक्स (Git स्टेजिंग) में जोड़ें क्षेत्र):

git add .

दोबारा जांच करके देखें कि आपने जो फ़ाइलें जोड़ी, बदली हैं या मिटाई हैं वे भी दिख रही हैं या नहीं इंडेक्स में शामिल है:

git status

git status आउटपुट में, "किए जाने वाले बदलाव" सेक्शन देखें.

कोड की समीक्षा शुरू की जा रही है

समीक्षा के लिए तैयार होने पर, codereview.appspot.com पर नई समस्या जोड़ें:

upload.py --rev=HEAD --base_url=https://github.com/google/google-api-java-client --send_mail -r reviewer@somedomain --cc ...
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

और बदलाव करने के बाद, नए बदलावों को एक स्टेज में बदलें. नया पैच अपलोड करने के लिए, उदाहरण के लिए, समस्या नंबर 123456 के लिए, नीचे दिया गया कमांड चलाएं:

upload.py --rev=HEAD -i 123456
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

ज़्यादा विकल्पों के लिए, upload.py --help चलाएं.

अगर आपको सामान्य GitHub वर्कफ़्लो, तुमने शायद इसे एक-दूसरे के साथ शेयर कर दिया हो GitHub रिपॉज़िटरी (डेटा स्टोर करने की जगह) को सेव किया गया है और इस नई सुविधा या गड़बड़ी को ठीक करने के लिए, ब्रांच बनाया गया है. आसानी से अपने कैलेंडर में जोड़ें. कोड भेजें अपने फ़ोर्क से मिले अनुरोधों की समीक्षा करें, तो पक्का करें कि आपका फ़ोर्क इसके साथ सिंक है अपस्ट्रीम रिपॉज़िटरी. ज़्यादा जानकारी के लिए, GitHub का सहायता पेज देखें फ़ोक को सिंक करने के तरीके पर क्लिक करें.

स्थानीय तौर पर तय किए गए बदलावों के लिए भी आपupload.py का इस्तेमाल कर सकते हैं.

upload.py --rev=upstream/master:HEAD --base_url=https://github.com/google/google-api-java-client --send_mail -r reviewer@somedomain --cc ...

कोड समीक्षक

अगर आप कोड समीक्षक हैं, तो बदलावों को मंज़ूरी देने से पहले उन्हें इंपोर्ट करें और उनकी जांच करें, और इसके बाद बदलावों को सेव करें और रिमोट रिपॉज़िटरी में पुश करें.

कोई परिवर्तन सेट आयात करना

गड़बड़ियों का जल्दी पता लगाने के लिए, रिमोट से नए बदलावों को अपडेट करना न भूलें अपने काम करने वाले ट्री में रिपॉज़िटरी (डेटा स्टोर करने की जगह) की जानकारी देनी होगी. पक्का करें कि आपका पेड़ साफ़ हो और आपकी इंडेक्स खाली है.

रिमोट रिपॉज़िटरी से नई कॉपी ढूंढने और मर्ज करने के लिए:

git pull

आपके कामकाजी ट्री और इंडेक्स में मौजूद डेटा की जांच करने के लिए:

git status

अपने स्थानीय Git क्लोन में पैच आयात करने के लिए:

  1. समस्या को codereview.appspot.com में खोलें.
  2. जिस पैच की शिकायत की गई है उसे देखने के लिए, "RAW डाउनलोड करें" देखें पर क्लिक करें पैच की खास जानकारी.
  3. "रॉ" पर क्लिक करें फ़ाइल को इंपोर्ट करने के लिए यूआरएल पाएं.
  4. रॉ डिफ़ फ़ाइल को इस नाम से अपनी कंप्यूटर में सेव करें, जैसे कि समस्या123456.diff.
  5. अपने स्थानीय Git वर्किंग ट्री पर जाएं और patch का इस्तेमाल करके डिफ़रेंस को लागू करें आदेश:
patch -p1 < issue123456.diff

यह पक्का करने के लिए कि आपने सही अंतर इंपोर्ट किया है या नहीं, git diff करें अपने काम के पेड़ में.

बदलाव सेट की जांच करना

जांच करने और इंस्टॉल करने के लिए, नीचे दिए गए कमांड का इस्तेमाल करें:

mvn clean install checkstyle:check

codereview.appspot.com पर बदलाव के सेट को मंज़ूरी देना

आम तौर पर, जब तक कोड की समीक्षा नहीं कर ली जाती, तब तक कोड को GitHub रिपॉज़िटरी में नहीं भेजा जा सकता को संतुष्टि मिलती है कि कोड तैयार है. तब यह तरीका अपनाया जाता है: "LGTM" मैसेज के साथ (मुझे अच्छा लग रहा है).

कोड स्वीकार किया जा रहा है

अहम जानकारी: कोड डालने से पहले, साथ ही, अपने वर्क ट्री को GitHub से नई कॉपी में अपडेट करें डेटा स्टोर करने की जगह:

git pull

अगर कोई समस्या है, तो उसे हल करें. इसके बाद, पक्का करें कि फिर से पास करें.

कोड को स्थानीय तौर पर इस्तेमाल करने के लिए:

git commit

एक मैसेज डालें. जैसे, यह मानकर कि आपने इसे ठीक किया है या लागू किया है समस्या # 123, जैसा कि GitHub में शामिल किया गया है समस्या को ट्रैक करने वाला टूल):

#123: NullPointerException when passing null to processFoo()
http://codereview.appspot.com/123456/

पहले कोलन और विवरण से पहले:

  • अगर यह समस्या ट्रैकर में मौजूद किसी समस्या का समाधान है, तो समस्या नंबर शामिल करें, जैसा कि दिखाया गया है.
  • अगर किसी ब्रांच की वैल्यू में बदलाव हुआ है, तो उस ब्रांच का नंबर भी शामिल करें.
  • आप इस प्रतिबद्धता के committer होंगे, लेकिन कृपया इसे क्रेडिट दें बदलाव के लेखक को author (--author=<author>) के तौर पर मार्क करके.

ब्यौरे के बाद, codereview पर हमेशा समस्या का लिंक शामिल करें की वेबसाइट पर जाएं. यह लिंक अहम है, क्योंकि इसके बिना, ये काम आसानी से नहीं किए जा सकते किसी कमिट से जुड़ी कोड समीक्षा का पता लगाएं, जो चर्चा का इतिहास बनाए रखें.

बदलाव को GitHub रिपॉज़िटरी में भेजने के लिए:

git push

अगर git push के दौरान, आपको अपडेट अस्वीकार होने के बारे में गड़बड़ी का मैसेज मिलता है (शायद आप git pull को चलाना भूल गए हैं), तो यहां देखें कि नए बदलावों के साथ मर्ज कैसे करें और अपने बदलावों को रिमोट डेटा स्टोर करने की जगह में भेजें:

git pull
git commit
git push

समस्या हल की जा रही है

कोड समीक्षा टूल में इस समस्या को बंद करना न भूलें. ऐसा करने के लिए:

  1. codereview.appspot.com में जाकर समस्या चुनें.
  2. "X" पर क्लिक करें यह सबसे ऊपर बाईं ओर, "Id" से पहले आता है.

बदलाव सेट को अनपैच करना

यदि किसी कारण से आप अपने द्वारा आयात किया गया परिवर्तन सेट नहीं करना चाहते हैं तो इसे हटाने के लिए कमांड का इस्तेमाल करें. सावधान रहें: यह आपके सभी स्थानीय बदलावों को वाकई मिटा देता है.

git checkout -- .