2010-02-16 6 views
10

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

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

यह प्रक्रिया काफी दर्दनाक है क्योंकि इसमें से अधिकांश एफ़टीपी के साथ किया जाता है और जब हम सामान्य से अधिक समय लेते हैं तो हम अक्सर संघर्ष नहीं करते हैं परीक्षण या तत्काल त्वरित फिक्स फिक्स की आवश्यकता होती है।

मैं एक छोटे से कैसे Git इस मामले में काम करेगा के रूप में उलझन में हूँ, यह स्पष्ट रूप से एक असामान्य परिदृश्य नहीं है लेकिन मैं क्या पाया है के सबसे विवरण में इस बारे में बात नहीं की थी।

तो मैं समझता हूँ कि सही ढंग से स्थानीय शाखाओं Git के साथ एक महत्वपूर्ण भूमिका निभाते हैं, मैं पहले Git भंडार क्लोन तो ठीक कुछ शाखाओं में बंटकर और इसे वापस करने की सभी स्थानीय?

तब मैं ट्रंक मर्ज के संघर्ष के साथ काम कर यदि कोई हो तो नीचे मुख्य भंडार करने के लिए इसे वापस करने के लिए मिलता है?

मेरी पूर्वानुमान सही हैं तो मुख्य प्रश्न क्या मंचन के साथ हुआ है। जाहिर है कि कुछ फीचर्स/फ़िक्स परीक्षण करने में अधिक समय लेते हैं, कुछ अधिक जरूरी हैं, आदि। क्या मैं कुछ निश्चित सुविधाओं/शाखाओं को अंतिम साइन-ऑफ़ के लिए स्टेजिंग पर कुछ करने में सक्षम हूं और फिर लाइव सर्वर से ऐसा ही कर सकता हूं (खींचो क्योंकि वे हस्ताक्षरित हैं)?

यह एक सीवीएस पृष्ठभूमि से आने वाले में लेने के लिए काफी एक बहुत कुछ है ... किसी भी मदद बहुत सराहना की जाएगी!

उत्तर

4
  • स्थानीय शाखाएं महत्वपूर्ण हैं क्योंकि आप जितनी चाहें उतनी बना सकते हैं, और उन्हें आसानी से मर्ज कर सकते हैं।
  • Tracking branches (वास्तव में local branch following a remote tracking one) अपने मामले में और अधिक प्रासंगिक हैं, के रूप में तुमको आप औपचारिक रूप से, एक रिमोट से एक के लिए एक स्थानीय शाखा से जोड़ने के लिए प्रकाशन उद्देश्य (DVCS का एक और बढ़िया सुविधा के लिए अनुमति देते हैं: आप कर सकते हैं "publish" एक दूरस्थ रेपो या अन्य) के लिए प्रतिबद्ध

विचार परिभाषित करने के लिए है: धक्का प्रयोजनों के लिए

  • नंगे रेपो
    • एक देव नंगे रेपो जहां सभी devs अपने मौजूदा काम को धक्का, और/या उनके सहयोगियों से काम करता है खींच सकते हैं (एक स्थानीय "केंद्रीय" रेपो की तरह है, लेकिन कई other workflows मौजूद है, इस ProGit book page में वर्णित एक की तरह)
    • एक नंगे स्टेजिंग रेपो जहां एक स्टेजिंग शाखा को परीक्षण/सत्यापन करने के लिए सामान के साथ धकेल दिया जाता है।
      क्यूए टीम एक स्टेजिंग कार्यशील निर्देशिका प्राप्त करने के लिए उस रेपो को क्लोन कर सकती है जहां वे वेबसाइट चला सकते हैं और परीक्षण कर सकते हैं।
    • उत्पादन वातावरण में एक सर्वर में एक नंगे रेपो।
      प्रोड प्रबंधक उस क्लोन कर सकता है, और फिर वास्तविक उत्पादन सर्वर पर rsync/ftp जो लाइव वेबसाइट का प्रबंधन करेगा।
      नोट: आपके पास वास्तविक उत्पादन सर्वर पर कोई भी डीवीसीएस नहीं होना चाहिए। आपके पास केवल उत्पादन वातावरण को चलाने/निगरानी करने के लिए आवश्यक होना चाहिए।

बुनियादी workflow धक्का/उन वातावरण के बीच शाखाओं खींच (रेपोस) पर आधारित है: देव पर

  • और रेपो के मंचन, आप कई सरकारी सार्वजनिक शाखाओं बनाए रख सकते हैं, एक Git maintainer Julio C. Hamano की तरह थोड़ा with his 'public', 'maint', 'next', 'pu' branches करता है।
  • मचान के लिए कुछ भी धक्का से पहले, आप rebase क्रम में अपने काम को पहले दूरस्थ मचान शाखा के शीर्ष पर हल करने के लिए कर सकते हैं स्थानीय स्तर पर किसी भी संघर्ष और किसी के साथ अपने स्थानीय देव काम अद्यतन ठीक पता लगाया/मचान क्षेत्र में किए गए।
  • prod करने के मंचन से धक्का (के बाद से कोई संशोधन prod रेपो पक्ष पर किया जाता है, कोई विवाद)
  • आप के लिए मचान रेपो और उत्पादन रेपो पर हुक परिभाषित कर सकते हैं केवल कुछ शाखाओं को स्वीकार तुच्छ होना चाहिए, और किसी भी शाखा से मना सृजन (सभी देव रेपो का विरोध करें जहां आप जितनी शाखाओं की आवश्यकता हो उतनी शाखाओं को परिभाषित/पुश/पुल कर सकते हैं)
+0

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

+0

इसे कभी न मानें - प्रोगिट पुस्तक ने प्रश्न का उत्तर दिया। फ़ाइलों को स्थानांतरित नहीं किया गया है, लेकिन केवल एक हैश का उपयोग किया जाता है। इसके लिंक के लिए धन्यवाद, बहुत उपयोगी है। – jfrobishow

+1

@jfrobishow: फ़ाइलों को वास्तव में स्थानांतरित नहीं किया जाता है: गिट में निर्देशिका द्वारा शाखाओं का प्रतिनिधित्व नहीं किया जाता है, बल्कि बस के ग्राफ के भीतर एक सूचक के रूप में। यह भी देखें http://stackoverflow.com/questions/1438662/which-of-the-two-is-bettergit-or-svn/1438697#1438697 – VonC

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