Git में डेटा की जाँच करने का उचित तरीका क्या है?


13

मेरा लक्ष्य ऐसे डेटा की जांच करना है जो कुछ आवश्यकताओं को पूरा नहीं करते हैं और फिर या तो प्रतिबद्ध किए गए या अस्वीकार किए गए रिमोट रिपॉजिटरी को अस्वीकार कर देते हैं।

प्री-कमिट हुक करने की समस्या यह है कि कई लोगों को तैनात करना मुश्किल है, जिन्हें मैन्युअल रूप से अपनी प्री-कमिट फाइल को अपडेट करना है। साथ ही, Git आपको .git फ़ोल्डर में सबमॉड्यूल करने की अनुमति नहीं देता है जो तैनाती के लिए बहुत आसान होता है फिर भी अफसोस।

दूसरा विकल्प जो मैं देख रहा हूं वह यह है कि मुझे विश्वास है कि रिमोट की तरफ अपडेट हुक है, जो प्रत्येक कमिट को देव द्वारा धक्का दिए जाने की जाँच करेगा और यदि कोई भी परीक्षण विफल रहता है तो पुश को अस्वीकार कर देगा।

किसी को भी इस समस्या पर कोई अंतर्दृष्टि है? और यदि हां, तो क्या आप मुझे एक उदाहरण अपडेट हुक स्क्रिप्ट के लिए प्रदान या इंगित कर सकते हैं? मैं थोड़ा उलझन में हूं कि यह कैसे काम करता है।


4
यह एक महान पहला सवाल है।
22th पर डेन्थ

जवाबों:


7

आपको पहले यह पता लगाना होगा कि क्या आप नहीं चाहते कि अयोग्य कोड को कमिट किया जाए या उसे अपस्ट्रीम पर वापस पुश / प्रकाशित किया जाए।

मेरी राय में बाद में एक और अधिक संभव है।

एक DVCS जैसे git के साथ। आप वास्तव में यह नियंत्रित नहीं करना चाहते हैं कि प्रत्येक डेवलपर अपने स्थानीय भंडार का उपयोग कैसे करता है। और आप वास्तव में उस पर नियंत्रण नहीं रख सकते।

पूर्व-प्रतिबद्ध हुक मूल सत्यापन और स्वच्छता के रूप में अच्छी तरह से काम करता है, अगर इसमें शामिल सभी लोग स्वेच्छा से इसे गले लगाते हैं। हम वास्तव में हमारी कंपनी में उस शिथिलता को लागू करते हैं। हालाँकि, इसे हमेशा छोड़ दिया जा सकता है git commit --no-verify

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

यह स्वचालित सत्यापन गुणवत्ता नियंत्रण को प्रतिस्थापित करने के लिए नहीं है, मुझे लगता है, जो आमतौर पर कोड समीक्षा या जोड़ी प्रोग्रामिंग के साथ हासिल किया जाता है।

यदि आप github से परिचित हैं , तो आप देखेंगे कि "पुल अनुरोध" इस मुद्दे पर एक और दृष्टिकोण है। कई ओपन सोर्स प्रोजेक्ट्स और कंपनियां शाखा अनुमति नियंत्रण और कोड समीक्षा के लिए जीथब के पुल अनुरोध का उपयोग करती हैं। लेकिन इसके लिए मानव संपर्क की आवश्यकता है, इस प्रकार आप जो मांग रहे हैं वह नहीं हो सकता है।


1

जैसा कि आपने पहले ही बताया, क्लाइंट पर ऐसा करना, जबकि तकनीकी रूप से संभव है, शायद व्यावहारिक नहीं है। इसके अलावा, कई git यूजर्स अंतरिम काम करते हैं, इसलिए हर कमिट पर draconian चेक करना उल्टा है।

मानक समाधान एक सर्वर-साइड हुक होगा। आप शायद एक pre-receiveहुक सेट करेंगे , जो हर बार एक पुश में आता है और अगर यह चाहे तो पुश को अस्वीकार कर सकता है। बाकी आप जो सटीक जांच करना चाहते हैं, उस पर निर्भर करता है।

यह प्रो गिट , अध्याय 7.3 कस्टमाइज़िंग गिट - गिट हुक में समझाया गया है ।


आपके उत्तर के लिए धन्यवाद, और मैं वास्तव में नई Git वेबसाइट से प्यार करता हूँ। मेरा एकमात्र मुद्दा यह है कि अपनी खुद की प्रतिबद्ध हुक लिखने में विशेष रूप से शुरू करना मुश्किल है क्योंकि आप नहीं जानते कि वास्तव में आप इस प्रक्रिया में कहां हैं और आपको क्या जांचना चाहिए। यदि मैं एक पूर्व प्राप्त हुक लिखने की कोशिश कर रहा हूं, तो क्या मुझे लगता है कि रिमोट की एक ट्रैकिंग शाखा है जिसे मैं धक्का दे रहा हूं? मुझे कैसे पता चलेगा? काश, जीआईटी की कुछ ऐसी विशेषता होती जो आपको इस समय में आपके पास मौजूद अनुकरण करने की अनुमति देती।
dalanmiller
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.