Manual:Pywikibot/Gerrit
शब्दावली
- Git - एक संस्करण नियंत्रण प्रणाली। SVN की जगह ले लेता है।
- Gerrit - एक कोड निरीक्षण मंच (https://gerrit.wikimedia.org)। Special:CodeReview की जगह ले लेता है।
- core - असली (master) शाखा जिसे पहले "rewrite" कहा जाता था।
सदस्यों के लिए
गिट क्लाइंट्स
- Windows के उपयोगकर्ताएँ: हमारी अनुशंसा है कि आप Git for Windows के साथ TortoiseGit का इस्तेमाल करें। पहले TortoiseGit स्थापित कर लें।
- macOS/लिनक्स: कमांड-पंक्ति गिट - https://git-scm.com/ या फिर brew install git (Homebrew, macOS)
कमांड-पंक्ति की मदद से मूल को डाउनलोड करने के उदाहरण के लिए:
$ git clone --recursive --branch stable https://gerrit.wikimedia.org/r/pywikibot/core.git
अपडेट करने के लिए:
# यह मानते हुए कि आप पहले से "core" में हैं:
$ git pull origin stable
$ git submodule update # Updates i18n messages
अगर आपकों ज़्यादा काम करने का मन नहीं और चाहते हैं कि सब एक साथ हो जाए, आप ऐसा चला सकते हैं:
# यह मानते हुए कि आप पहले से "core" में हैं:
$ git pull origin stable --recurse-submodules # This updates everything
ध्यान रखें कि रिपॉज़िटरियाँ काफ़ी बड़ी होती हैं (>100MB)। अगर यह एक समस्या है, अंतिम संस्करण प्राप्त करने के लिए
$ git clone --recursive --branch stable --depth 3 https://gerrit.wikimedia.org/r/pywikibot/core.git
का इस्तेमाल करें।
SVN की मदद से
जनवरी 2023 तक SVN की मदद से Pywikibot को डाउनलोड किया जा सकता है। ऐसा करने के लिए Manual:Pywikibot/Installation/SVN पर अनुदेशों का पालन करें। ध्यान रखें कि यह जनवरी 2024 से काम नहीं करेगा। हम सलाह देंगे कि आप Pywikibot को स्थापित करने के लिए pip का इस्तेमाल करें।
URL
आपका क्लाइंट शायद आपसे रिपॉज़िटरी का URL माँगेगा।
URL का प्रारूप है:
https://gerrit.wikimedia.org/r/pywikibot/[repo name]
.
तो मूल के लिए:
https://gerrit.wikimedia.org/r/pywikibot/core
.
Nightly वितरण
आप Toolforge पर डाउनलोड पृष्ठ के ज़रिए पूरे पैकेजेस डाउनलोड कर सकते हैं या फिर स्रोत कोड देख सकते हैं।
- If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel जुड़ें or pywikibot@ mailing list.
विकासकों के लिए
पैचेस प्रस्तुत कैसे करें...गिट/Gerrit कॉन्फ़िगर करना, आदि।
दिशानिर्देश पढ़ें, और फिर Gerrit/Getting started में चरणों का पालन करते हुए यह चलाएँ:
#मूल को हैक करने के लिए
$ git clone --recursive ssh://USERNAME@gerrit.wikimedia.org:29418/pywikibot/core.git
और कोड बदल लेने के बाद Gerrit/Tutorial में चरणों का पालन करें
- Windows
- Windows का इस्तेमाल कर रहे विकासक अधिक जानकारी के लिए Gerrit/TortoiseGit tutorial का इस्तेमाल कर सकते हैं।
उदाहरण (चरण-दर-चरण)
क्रमशः ऐसा करें:
- अपना सॉफ़्टवेयर सेटअप करें:
- अगर SVN की पहुँच के लिए न किया गया हो; एक SSH कुँजी और एक विकासक खाता बनाएँ, और फिर Gerrit और विकिटेक पर अपनी सार्वजनिक कुँजी जोड़ दें।
- 'git' पैकेज स्थापित करें
- 'git-review' पैकेज स्थापित करें
- Openstack [१] वाला, Facebook वाला नहीं
- 1.12 या 1.21 जैसा कोई भी संस्करण, मगर v1.18 नहीं
- अपना रिपॉज़िटरी क्लोन करके सेटअप करें:
- (जैसे
$ git clone --recursive ssh://USERNAME@gerrit.wikimedia.org:29418/pywikibot/core.git pywikibot-git
svn checkout
) का इस्तेमाल करके सभी सबमॉड्यूल्स के साथ गिट रिपॉज़िटरी को क्लोन करें और इंतज़ार करें। इस चरण में कुछ समय लगेगा - डिरेक्ट्री दर्ज करें
$ cd pywikibot-git
- सिर्फ इस रिपॉज़िटरी/डिरेक्ट्री के लिए गिट सेटिंग कॉन्फ़िगर करें (ग्लोबल नहीं, अगर उदाहरणस्वरूप आपके पास अलग-अलग परियोजनाओं के लिए अलग-अलग छद्म हों)। और
$ git config user.email "EMAIL"
इसे ग्लोबल रूप से कॉन्फ़िगर करने के लिए$ git config user.name "USERNAME"
--global
पैरामीटर का इस्तेमाल करें। - अंग्रेज़ी संदेश दिखाने के लिए अपने टर्मिनल/कंसोल को कॉन्फ़िगर करें (git review के साथ ठीक से काम करने के लिए Gerrit/git-review#Troubleshooting देखें) किसी नए कंसोल के बनाए जाने पर हर बार यह काम ज़रूरी है। इसे स्थायी रूप से कॉन्फ़िगर करने के लिए इसे अपने
$ alias git="LANG=C git"
bashrc
या समान सेटअप फ़ाइल में रखें - सिर्फ इस रिपॉज़िटरी के लिए git review सेटअप करें और अपना
$ git review -s
USERNAME
दोबारा दर्ज करें। यह एक ज़रूरी चरण है - अगर आप इसे भूल जाते हैं, Gerrit/Tutorial#Push your change set to Gerrit के अनुसार नीचे का आखिरीgit review
विफल हो जाएगा (जिसकी मदद से निरीक्षण के लिए कमिट्स प्रस्तुत किए जाते हैं) - हालाँकि इसे तब भी सुलझाया जा सकता है।
- रिपॉज़िटरी पर काम करें, जैसे निरीक्षण के लिए पैचेस कमिट करें:
- master शाखा पर जाएँ (ज़रूरत न भी पड़ सकती है)
$ git checkout master
- वर्तमान शाखा को ऑनलाइन अवतरण से अपडेट करें (जैसे
svn update
)$ git pull
$ git checkout -b MEANINGFUL_BRANCH_NAME
से काम करने के लिए अपनी लोकल अस्थायी शाखा बनाएँ, और उपलब्ध शाखा के नामकरण की टिप्पणियों की मदद से एकMEANINGFUL_BRANCH_NAME
चुनने की कोशिश करें - शाखा की ज़रूरत न पड़ने पर इसे$ git branch -D MEANINGFUL_BRANCH_NAME
से हटाया जा सकता है- अब कुछ कोड लिखें; फ़ाइलें जोड़ने, हटाने और स्थानांतरित करने के लिए add, rm और mv गिट कमांड्स देखें - जब आप अगले चरण के लिए तैयार हों
- अपने बदलाव लोकल अस्थायी शाखा पर की मदद से कमिट करें (आप
$ git commit --all
--all
की जगह-a
का और--no-rebase
की जगह-R
का इस्तेमाल कर सकते हैं) और, जैसा SVN से इस्तेमाल किया गया है, एक सार्थक कमिट संदेश दर्ज करें, जैसे कोड में आपके बदलावों का एक संक्षिप्त विवरण - वैकल्पिक रूप से कमिट डेटा जाँचकर सुनिश्चित करें कि आप वही भेज रहे हैं जो आप भेजना चाहते हैं
$ git show HEAD
- डेटा को ऑनलाइन रिपॉज़िटरी यानी gerrit for review (जैसे
svn commit
) पर भेज दें$ git review
- फिर Gerrit पर जाएँ, अपने बदलाव पर क्लिक करें, "Add Reviewer" बटन के पास के इनपुट बॉक्स में किसी निरीक्षक का नाम लिखें
- master शाखा पर जाएँ (ज़रूरत न भी पड़ सकती है)
- वैकल्पिक अतिरिक्त विकल्प:
- गिट हुक्स की मदद से RCS कीवर्ड्स एक्सपांशन सक्षम करें (जैसे svn:keywords
$Id$
) (यहाँ पर जर्मन में अच्छे से समझाया गया है)- मूल के लिए:
$ git config filter.rcs-keywords.smudge 'rcs-keywords.py %f'
$ git config filter.rcs-keywords.clean 'rcs-keywords.py'
- (शायद हमें dealing-with-svn-keyword-expansion-with-git-svn की तरह git-rcs-keywords मॉड्यूल का इस्तेमाल करने के बारे में सोचना चाहिए)
- मूल के लिए:
- गिट हुक्स की मदद से RCS कीवर्ड्स एक्सपांशन सक्षम करें (जैसे svn:keywords
Phabricator
अगर आप 'Change-Id: ....' के ठीक पहले एक पंक्ति में 'Bug: T12345' का उल्लेख करते हैं, पैचेस को एक Phabricator टास्क से जोड़ दिया जाता है। अधिक जानकारी के लिए Gerrit/Commit message guidelines देखें।
समस्याएँ और समाधान
jenkins-bot के संदेश
https://integration.wikimedia.org/ci/job/pywikibot-core-tox-flake8/2591/console : FAILURE in ?s (non-voting)
कमिट किए गए पैचसेट ने flake8 कोड शैली जाँच को पास नहीं किया। इसमें कोड की कार्यक्षमता नहीं, बल्कि सिनटैक्स और शैली के बारे में टिप्पणी जोड़ी गई है।
https://integration.wikimedia.org/ci/job/pywikibot-core-tox-flake8-docstrings-mandatory/560/console : FAILURE in ?s (non-voting)
कमिट किए गए पैचसेट ने अनिवार्य pep257 शैली जाँच को पास नहीं किया। इसमें कोड की कार्यक्षमता नहीं, बल्कि इनलाइन प्रलेखन के बारे में टिप्पणी जोड़ी गई है।
https://integration.wikimedia.org/ci/job/pywikibot-core-tox-nose/1448/console : FAILURE in ?s (non-voting)
कमिट किए गए पैचसेट ने प्री-मर्ज परीक्षण सुइट को पास नहीं किया। इससे यह बोध कराया गया है कि कोड बुनियादी परीक्षणों में विफल हुआ है, मगर पास से बदले गए कोड की कार्यक्षमता पर कोई टिप्पणी नहीं जोड़ी जाएगी। और भी कई परीक्षण हैं जिन्हें विकासकों को प्रस्तुति से पहले चलाना चाहिए, और जिन्हें मर्ज करने के बाद भी चलाया जाएगा।
This change could not be automatically merged with the current state of the repository. Please rebase your change and upload a new patchset.
पैचसेट को वर्तमान HEAD में अपने आप मर्ज नहीं किया जा सकता है। कृपया समाधान के लिए Build failed due to merge conflict पढ़ें।
इसके बारे में अधिक जानकारी Gerrit/Tutorial#How to submit a patch और git review complains about multiple commits पर पाई जा सकती है।