Gerrit के लिए दस्तावेज़, विशेष रूप से "Push changes" अनुभाग कह त्रुटि मिलती है, बताते हैं कि आप "किसी भी Git ग्राहक उपकरण का उपयोग जादुई refs/for/'branch'
रेफरी" करने के लिए धक्का।
निम्नलिखित छवि the Intro to Gerrit से ली गई है। जब आप गेरिट को दबाते हैं, तो आप git push gerrit HEAD:refs/for/<BRANCH>
करते हैं। यह आपके परिवर्तन स्टेजिंग क्षेत्र (आरेख में, "लंबित परिवर्तन") में आपके परिवर्तन को धक्का देता है। गेरिट में वास्तव में <BRANCH>
नामक शाखा नहीं है; यह गिट क्लाइंट के लिए निहित है।
आंतरिक रूप से, गेरिट के पास गिट और एसएसएच ढेर के लिए अपना कार्यान्वयन है। यह इसे "जादुई" refs/for/<BRANCH>
रेफरी प्रदान करने की अनुमति देता है।
जब इन नामस्थानों में से किसी एक में रेफरी बनाने के लिए पुश अनुरोध प्राप्त होता है तो गेरिट डेटाबेस को अद्यतन करने के लिए अपना तर्क करता है, और उसके बाद ऑपरेशन के परिणाम के बारे में क्लाइंट को निहित करता है। एक सफल परिणाम क्लाइंट को यह मानने का कारण बनता है कि गेरिट ने रेफरी बनाई है, लेकिन हकीकत में गेरिट ने रेफरी नहीं बनाई है। [Link - Gerrit, "Gritty Details"]।
एक सफल पैच के बाद (यानी, पैच Gerrit को धक्का दे दिया गया है, [यह "लंबित परिवर्तन" मचान क्षेत्र में डाल], की समीक्षा की और समीक्षा बीत चुका है), Gerrit धक्का "लंबित परिवर्तन" से "आधिकारिक रिपोजिटरी" में परिवर्तन, यह गणना करते हुए कि किस शाखा ने इसे जादू के आधार पर धक्का दिया था जब आपने refs/for/<BRANCH>
पर धक्का दिया था। इस तरह, सफलतापूर्वक समीक्षा की गई पैच को सीधे Authoritative Repository
की सही शाखाओं से खींचा जा सकता है।
यह एक सुंदर जवाब है। धन्यवाद :) – Shrayas
जिज्ञासा से, वास्तव में क्या होता है यदि आप केवल "गिट पुश मूल" जैसी कुछ करते हैं? मैंने कोशिश की और कहीं भी इस बदलाव को नहीं देख सकता। लेकिन यह स्वाभाविक रूप से मेरे स्थानीय लॉग में मौजूद है। –
@Pintolaranja मैंने वही किया। आप सही हैं, गेरिट ऐसी स्थिति को "संभालती है", लेकिन इससे कोई बदलाव नहीं होता है। तो वास्तव में, यह इसे बिल्कुल संभाल नहीं करता है। जो वास्तव में मुझे बंद कर देता है, क्योंकि यह वास्तव में बेवकूफ है। उपयोगकर्ता को कुछ करने की अनुमति क्यों दें, कि गेरिट ठीक तरह से संभाल नहीं पा रहा है? – trejder