आप स्थानीय रूप से (विशेष रूप से विंडोज पर) सहित व्यवहार को कैसे लागू कर रहे हैं?


13

मैं इस .NET शॉप को svn से git में स्थानांतरित करने के बारे में बात कर रहा हूं, और कुछ सहायक मुद्दों की पहचान कर चुका हूं जिनके स्विच को फ्लिप करने से पहले मैं इसका समाधान करना चाहता हूं।

मैं विशेष रूप से इस प्रश्न के बारे में पूछ रहा हूं जो लाइन-एंडिंग प्रवर्तन है। डिफ़ॉल्ट रूप से विंडोज़ के लिए 'चेकआउट क्रिप्ट, कमिट एलएफ' के साथ इंस्टॉल होता है, जो स्रोत के एक समूह के लिए काम नहीं करेगा (जो कि जहां तक ​​मुझे पता है) विशेष रूप से क्रॉफ एंडिंग से युक्त है।

मैं नहीं जानता कि मैं आँख बंद करके किसी भी देवता पर भरोसा करूंगा, इसे सही ढंग से दिए गए निर्देश को भी कॉन्फ़िगर करने के लिए, इसलिए मैं निम्नलिखित में से किसी एक (या दोनों) पर विचार कर रहा हूं, लेकिन यदि कोई व्यक्ति किसी अन्य मार्ग से गया हो तो उत्सुक था।

  • एक पूर्व-प्रतिबद्ध हुक जो किसी भी lf लाइन एंडिंग (या शायद सभी lf लाइन एंडिंग) के लिए जाँच करता है, और उस घटना को अस्वीकार करता है।
  • एक स्थापित स्क्रिप्ट देवों को वितरित की जाती है जो वैश्विक कॉन्फिग को 'as-is, as-is' के साथ पॉप्युलेट करता है।

PS यह लिखते समय मेरे साथ यह हुआ कि svn से git में प्रारंभिक रूपांतरण डिफ़ॉल्ट तरीके से कर सकता है और जब तक लोग डिफ़ॉल्ट से चिपके रहते हैं जो बहुत सहज होगा। एक .NET दुकान में git का उपयोग करने वाला एक देवता रहा है जिसने गैर-डिफ़ॉल्ट के साथ git को स्थापित किया है-जैसे, जैसे है, ', मैंने अपने स्वयं के मुद्दे भी वहां बनाए हैं (वे सभी मेरे आने से पहले डिफ़ॉल्ट रूप से लुढ़क गए) । इसलिए मैं अभी भी किसी तरह के प्रवर्तन तंत्र की ओर झुक रहा हूं।


2
एक पूर्व प्राप्त हुक सर्वर साइड के साथ यह हाथ होना चाहिए (सुनिश्चित करें कि शेल्फ एंडिंग और यदि नहीं तो विफल), अपडेट हुक के साथ आपको पूर्व-मर्ज को भी अपडेट करने में सक्षम होना चाहिए। आप किस प्रकार के गिट सर्वर का उपयोग कर रहे हैं? यदि इसे वर्कस्टेशन साइड में करना है, तो कॉन्फ़िगरेशन मैनेजर जाने का रास्ता हो सकता है, लेकिन कठिन और डाउनसाइड के झुंड के साथ। अंतिम उपाय CI पर
लाइनिंग है और

1
मैं तेंसिबाई से सहमत हूं, और यह जोड़ूंगा कि आपके द्वारा चयनित विकल्प इस बात पर आधारित होना चाहिए कि आप कितनी सख्ती से मानते हैं कि इसे लागू किया जाना चाहिए। सख्त प्रवर्तन के लिए पूर्व-प्रतिबद्ध हुक, पोस्ट-प्रतिबद्ध अनुपालन रिपोर्टिंग के लिए लाइनिंग।
डेव स्वर्सकी

धन्यवाद डेव, क्लाइंट-साइड / सख्त प्रवर्तन के लिए मेरा तर्क यह है कि यह मेरे लिए समग्र रूप से कम काम करेगा और त्रुटियों को जल्द पकड़ लेगा। मुख्यमंत्री के कार्यस्थलों पर नहीं जा रहे हैं, लेकिन देव सर्वर सभी डीएससी में हैं, इसलिए इसे जोड़ना तुच्छ होगा। संपादित करें: आप के रूप में अच्छी तरह से @Tensibai धन्यवाद ... क्या आप उन downsides पर विस्तृत कर सकते हैं जिन्हें आप ग्राहक-पक्ष में देखते हैं?
ndarwincorn

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

अपनी समस्या के समाधान के लिए आपने क्या किया?
न्यूटोपियन

जवाबों:


6

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

और यह शायद इसलिए है क्योंकि आपको वितरित संस्करण नियंत्रण का उपयोग करते समय स्थानीय कॉन्फ़िगरेशन की स्थिति के बारे में परवाह करने की आवश्यकता नहीं होनी चाहिए। आपको केवल अपने कॉन्फ़िगरेशन की स्थिति के बारे में ध्यान रखना चाहिए । मान लें कि आप एक केंद्रीकृत संस्करण नियंत्रण प्रणाली के रूप में git का उपयोग कर रहे हैं, क्योंकि यह मूल रूप से वैसे भी हर कोई करता है क्योंकि इसका सबसे आसान है, तो चलो मान लेते हैं कि "आपका" कॉन्फ़िगरेशन केंद्रीय सर्वर पर सहेजे गए कोड की प्रतिलिपि है।

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


4

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

कुछ अच्छे टूल भी हैं, जिनके आधार पर आप किन भाषाओं का उपयोग करते हैं और कौन से CI टूल्स का उपयोग करते हैं, जो कि निर्माण प्रक्रिया के दौरान या आपके द्वारा सेट किए गए नियमों के आधार पर कोड को स्टेप ऑटो फॉर्मेट के लिए अनुरोध कर सकते हैं। कोड रखने के दौरान कोड को सुसंगत और न्यूनतम स्वरूपण मुद्दों को देखने में मदद करता है।


क्या आप अपने द्वारा उपयोग किए जा रहे टूलींग पर विस्तार से ध्यान देंगे? यह देखते हुए कि इसे पूरा करने के कई तरीके हैं, और हमें अपना मिल गया है लेकिन अभी तक उन्हें वास्तव में इस तरह से लागू नहीं किया गया है, मैं उत्सुक हूं कि आप इसे कैसे हल कर रहे हैं।
ndarwincorn

1
हम टाइपस्क्रिप्ट, जीथब और जेनकिंस का उपयोग कर रहे हैं। इस प्रकार की चीज़ के लिए टाइपस्क्रिप्ट में एक अच्छा पारिस्थितिकी तंत्र है।
एवी

3

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

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

अपने git init में टेम्प्लेट का उपयोग करके आप यह सुनिश्चित कर सकते हैं कि आपके repos सभी gitignore, gitattributes आदि फाइलों के बराबर हैं, जिस तरह से आप उन्हें चाहते हैं।

अंतिम बात, आपके प्रश्न से सीधे संबंधित नहीं, मुझे सबसे बड़ा घर्षण बिंदु मिला जब svn saavy टीम को एक गिट आधारित वर्कफ़्लो में ले जाने के लिए जो उन्हें बीच में अतिरिक्त रेपो के लिए उपयोग किया जाता है। मैंने पाया कि इस विज़ुअल क्यू शीट ने यह बताने में थोड़ी मदद की कि किस हिस्से पर क्या प्रभाव पड़ा।

उम्मीद है कि इससे थोड़ी मदद मिली।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.