2012-12-01 9 views
50

हम एक ही उत्पाद पर काम कर रहे 60+ डेवलपर्स की एक टीम हैं और एसवीएन से गिथब में जा रहे हैं। हमारे पास एसवीएन में एक प्रक्रिया है जहां व्यक्तिगत फाइलों को लॉक किया जाता है और जब भी डेवलपर कोड करना चाहता है, तो उसे फ़ाइल के मालिक द्वारा इसे अनलॉक करने की आवश्यकता होती है। हम में से तीन कुल 150+ फाइलों के मालिक हैं। अनलॉकिंग कोड समीक्षा से पहले है।क्या जिथब का उपयोग करते समय व्यक्तिगत फाइलों या निर्देशिकाओं को फोर्क पर लॉक करने का कोई तरीका है?

गीथब में, हम फोर्क-क्लोन मॉडल का उपयोग करने की योजना बना रहे हैं - प्रत्येक प्रोजेक्ट देव का एक समूह काम कर रहा है, एक कांटा करेगा, प्रत्येक डेवलपर कांटा का क्लोन करेगा, कोड & को मूल रूप से लिखें, सुविधा का नेतृत्व अपस्ट्रीम के लिए एक पुल अनुरोध करेगा।

हालांकि यह ठीक लगता है, समस्या यह है कि जब एक बड़ी परियोजना वितरित की जाती है, तो यह समीक्षा के लिए बहुत सारे बदलाव लाती है और इसलिए, फ़ाइल मालिकों के लिए लोड बढ़ जाती है। इसके अलावा, यह विकास के बाद के चक्रों में हो सकता है और इसलिए परियोजना को खतरे में डाल दिया जा सकता है।

एक विधि जिसे हमने सोचा था कि काम कर सकता है, जब गिट पुश मूल (कांटा) पर किया जाता है। अपस्ट्रीम पर एक अंतिम समीक्षा गिट खींच सकता है।

हालांकि, हमें इसके लिए कोई भी जिथब एक्सटेंशन या पुश हुक नहीं मिला। क्या गिटूब के साथ ऐसा करने के लिए एक त्वरित तरीका (पढ़ा, मौजूदा विस्तार) है या क्या हमें उसी हुक का उपयोग करना चाहिए जिसे हम गिट के साथ उपयोग करेंगे?

+5

मुझे ऐसा लगता है कि फ़ाइल लॉकिंग कुछ गिट गायब है (यह ज्यादातर एसवीएन में परेशान है)। ज्यादातर मामलों में, मुझे यकीन है कि पुल अनुरोध और ब्रांचिंग आपके लिए जाने का तरीका है। आप submodules का उपयोग करके अलग-अलग रेपो में अपने प्रोजेक्ट के अलग-अलग हिस्से को अलग भी कर सकते हैं, और फिर आपके पास टीम के बीच एक अधिक क्लीनर अलगाव (फ़ाइल सुरक्षा) है। तो फ़ाइल मालिक, मुख्य मुख्य उपनिवेश मालिक बन जाएगा, और वह अपनी टीम द्वारा अपनी मुख्य शाखा में किए गए हर पुल अनुरोध को संशोधित करता है। फिर हर उपयोगकर्ता के पास इसका अपना कांटा होता है। –

+0

http://programmers.stackexchange.com/questions/184435/workflow-using-binary-document-formats-in-git-without-locks-moving-from-subver – Steen

+2

@ सिमोनबौड्रियास आपके विचार पूरी तरह गैर-काम कर रहे हैं अगर गिट किसी दस्तावेज़ प्रकार के लिए उपयोग किया जाता है जिसके लिए कोई मर्ज-टूल मौजूद नहीं है (जो लगभग हमेशा मामला है)। TortiseSVN/WebSVN के साथ हम _can_ एमएस एक्सचेंज से बचते हैं, लेकिन गिट के साथ हम नहीं कर सकते हैं। मेरी राय पर, यह गिट का एक बहुत दुर्भाग्यपूर्ण फॉलबैक है। – peterh

उत्तर

-2

यह उपयोग केस एसवीएन ->rebase से बहुत बेहतर है कारणों में से एक है! यदि आप अपने गलती कार्यप्रवाह सबमिट करने से पहले अपस्ट्रीम से रीबेज करते हैं तो आप अच्छे गिट वर्कफ़्लो का पालन करते हैं। आपको फ़ाइल लॉकिंग और किसी अन्य व्यक्ति के कामों पर स्टॉम्पिंग करने और संघर्षों को मर्ज करने के बारे में चिंता करने की आवश्यकता नहीं है ... एक रिबेस आपके काम को अलग करता है, रिमोट काम करता है और फिर शीर्ष पर अपना काम लागू करता है।

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

Gitflow एक बहुत लोकप्रिय गिट वर्कफ़्लो है, और Github themselves has some nice tips and shares their workflow है।

+78

यह तब तक काम करता है जब तक आपके पास विलय योग्य फ़ाइलें हों। यदि आपके पास बाइनरी फाइलें हैं (जैसे वर्ड दस्तावेज़) तो आप फंस गए हैं। – schoetbi

+8

गीट svn से बेहतर नहीं है और इसके विपरीत। गिट एक डेवलपर के लिए अच्छी तरह से फिट बैठता है जो गैर बाइनरी फ़ाइलों का उपयोग करता है। बाइनरी के लिए हमारी कंपनी के मामले में हमने svn का चयन किया क्योंकि यह बड़ी बाइनरी फाइलों (20 एमबी + 100+ संस्करणों के साथ) को गिट से बेहतर (0 परिदृश्य में हमने देखा) ps: मुझे गिट पसंद है, –

+1

क्या schoetbi ने ऊपर कहा है, लेकिन इसे गैर-बाइनरी स्थिति में विस्तारित करना: यदि आप आईओएस के लिए विकास कर रहे हैं और स्टोरीबोर्ड का उपयोग कर रहे हैं, तो विलय/रिबेसिंग संभव नहीं है। तो अनिवार्य रूप से आपके पास एक ही स्टोरीबोर्ड पर काम करने वाले 2 डेवलपर नहीं हो सकते हैं। – Fraggle

70

कोई मौका नहीं है, अगर फ़ाइल विलय योग्य नहीं है और आपको इसे लॉक करने की आवश्यकता है, तो जीआईटी, यानी एसवीएन या क्लियरकेस के बजाय केंद्रीकृत समाधान का उपयोग करें।

+4

यह सही उत्तर है। लेखन के इस समय स्वीकार नहीं किया गया। Upvoted। इसे आवश्यक होने के लिए लॉक करने के लिए बाइनरी फाइल भी नहीं होनी चाहिए। उदाहरण के लिए दूसरे प्रश्न पर आईओएस स्टोरीबोर्ड पर टिप्पणी लें। – Harindaka

+0

आईओएस स्टोरीबोर्ड? "दूसरा प्रश्न? क्या आप कृपया लिंक कर सकते हैं? –

+0

मेरा मानना ​​है कि @ हरिंदका का अर्थ है "अन्य उत्तर," नहीं "अन्य प्रश्न।" टिप्पणी को संदर्भित किया जा रहा है: http://stackoverflow.com/questions/13662255/is-there-a-way-to-lock-individual-files-or-directories-on-fork-when-using-github#comment41679865_14864163 –

0

गिट में ऐसा करने का कोई तरीका नहीं है। जैसा कि अन्य ने कहा, यदि दस्तावेज़ "विलय योग्य" है, तो आप जिस तरह से कार्य करते हैं उसे बदलकर, आप पुन: प्रयास करने का प्रयास कर सकते हैं। हमारे मामले में, हमारे पास एक सम्मेलन है: यदि आपको वास्तव में इसे लॉक करने की आवश्यकता है, तो इसका नाम बदलें। लेकिन हम केवल आदि कार्यालय दस्तावेजों में ऐसी बातें करते हैं,
यह constribution एक समाधान देने के नहीं है, यह एक समाधान चाल है (लेकिन stackoverflow मुझे एक टिप्पणी के रूप में जोड़ना अनुमति नहीं है।

3

Git किसी भी प्रदान नहीं करता है , कार्यक्षमता पर ताला लगा है, क्योंकि यह का विकेंद्रीकरण किया गया है। हालांकि, अगर आप GitLab Enterprise Edition Premiumuse the web interface to lock individual files or folders, आप कर सकते हैं पर अपने कोड की मेजबानी, को प्राप्त करने वास्तव में क्या आप क्या करना चाहते।

आप किसी और की सर्वर पर अपनी परियोजना की मेजबानी के लिए नहीं करना चाहते हैं (उनकी वेबसाइट), आप गिटलैब भी डाउनलोड कर सकते हैं और इसे अपने वेबसर्वर पर होस्ट कर सकते हैं।

1

यदि आपका उपयोग कर रहे हैं(जिसे गिटहब की तरह कुछ गिट होस्टिंग प्रदाताओं द्वारा समर्थित किया गया है) आप File Locking का उपयोग कर सकते हैं।

मार्क एक फ़ाइल के रूप में संपादन .gitattributes फ़ाइल द्वारा ताला-युक्त टाइप करें:

*.docx lockable 
# Make MS Word files lockable 

और साथ यह ताला:

$ git lfs lock example.docx 

आप git lfs unlock example.docx के साथ अपनी फ़ाइलें अनलॉक कर सकते हैं और --force जोड़कर किसी और के उन ।

संबंधित मुद्दे

 संबंधित मुद्दे