2011-09-27 7 views
45

अगर यह स्पष्ट या आसान है, तो मैं क्षमा चाहता हूं, मैंने गिट/गीथब ट्यूटोरियल की अच्छी संख्या देखी है और अन्य लेख पढ़े हैं, लेकिन मैं चाहता हूं सुनिश्चित करें कि मैं क्या कर रहा हूं सही है।गिट/गिटहब का उपयोग करने के लिए उचित तरीका - देव/परीक्षण/उत्पादन सर्वर के साथ PHP सिस्टम

मैं अपनी विकास टीम और प्रक्रिया में वीसी (स्पष्ट कारणों से) को शामिल करना चाहता हूं।

वर्तमान विकास की प्रक्रिया (Dreamweaver का उपयोग कर):
* एक टिकट (या कार्य आदेश) प्राप्त
* विकास सर्वर पर फ़ाइल डाउनलोड
* परिवर्तन फाइल करने के लिए
* अपलोड विकास सर्वर पर फ़ाइल बनाने
* परिवर्तन का परीक्षण/सत्यापित
* उत्पादन सर्वर को भेजें


मैं यह पता लगाने की कैसे हमारे नए विकास बनाने के लिए कोशिश कर रहा हूँ गिट का उपयोग करने के साथ एनटी प्रक्रिया।

मैं PHPStorm पर स्विच कर रहा हूं (जो कि गिट के साथ सीधे एकीकरण के साथ एक वास्तविक PHP आईडीई है)।

ऐसा

  • कुछ एक टिकट (या कार्य आदेश)
  • चेकआउट/अपडेट/डाउनलोड फ़ाइल (रों)
  • बदलें फ़ाइलें
  • फ़ाइल अपलोड करें (जो मुझे लगता है है प्राप्त होगा वर्तमान कार्यशील निर्देशिका भी ...?)
  • दिन के अंत में,
  • सर्वर का परीक्षण करने के लिए डेटा भेजना स्क्रिप्ट बनाएं (रात में बील घ)

या यह बेहतर हो की तरह

  • कुछ करने के लिए एक टिकट (या कार्य आदेश प्राप्त)
  • चेकआउट/अपडेट/डाउनलोड फ़ाइल (रों)
  • फ़ाइलें बदलें
  • हैं
  • फ़ाइल अपलोड करें/
  • सर्वर का परीक्षण करने के लिए स्क्रिप्ट को डेटा भेजें (रात का निर्माण)

या फिर कोई और तरीका है? समझने में थोड़ी परेशानी हो रही है कि इष्टतम प्रवाह क्या होगा?

किसी भी मदद की सराहना की जाएगी।


संपादित

मैं अगर यह सबसे अच्छा है स्थानीय स्तर पर (हर डेवलपर) सर्वर का एक संस्करण के लिए देख कोशिश कर रहा हूँ, और अगर हां, तो कैसे कि काम करता है आप 7 या तो अगर शाखाओं?

यदि नहीं, तो आप वेब पर उनके साथ 7 या उससे अधिक शाखाओं से कैसे निपटते हैं? क्या आप एफ़टीपी फाइलें बनाते हैं या उन्हें ऑटो अपडेट करने के लिए गिट हुक का उपयोग करते हैं?

अद्यतन 07/26/2012

काफी देर के लिए Git के साथ सफलतापूर्वक काम कर अब मैं बड़ी सफलता के साथ इस शाखाओं में मॉडल का अनुसरण किया गया है के बाद: A Successful Git Branching Model

ऊपर का जवाब था हाँ - निश्चित रूप से सर्वर का एक स्थानीय संस्करण होना चाहिए।

+4

यह आपकी गिट शाखाओं और वर्कफ़्लो के प्रबंधन के लिए एक लोकप्रिय विकल्प है: http://nvie.com/posts/a-successful-git-branching-model/ –

+0

@ माइक - यह एक शानदार मॉडल है और मैं योजना बना रहा हूं उसका इस्तेमाल कर रहे हैं। क्या आप जानते हैं कि वे इसके साथ कैसे काम करते हैं? मेरा मतलब है ... क्या उनके पास प्रत्येक शाखा के लिए सर्वर सेटअप का एक अलग सर्वर या अनुभाग है, या क्या लोगों के पास उनकी मशीन पर सर्वर की स्थानीय प्रतिलिपि है और वे प्रत्येक शाखा में काम करते हैं, या यह कैसे काम करता है? –

उत्तर

67

मान लें कि आपके पास एक लाइव सर्वर और एक विकास सर्वर है, मैं इन पंक्तियों के साथ कुछ करूँगा।

यहां तक ​​कि एक विकास चक्र के साथ शुरू मैं कम से कम दो शाखाओं के लिए होता है से पहले:

  1. मास्टर - विकास सर्वर इस शाखा
  2. स्थिर पर चलता है - लाइव सर्वर इस शाखा पर चलता है।

तो एक डेवलपर एक टिकट या एक कार्य आदेश वह/वह निम्न कार्य करेंगे हो जाता है, तो:

  1. Git पुल मूल मास्टर
  2. Git शाखा featureBranch (टिकट आईडी के रूप में नामित या कार्य आदेश के लिए एक अच्छा वर्णन के रूप में)
  3. गिट चेकआउट सुविधा ब्रंच
  4. वांछित परिवर्तन को पूरा करने वाले परिवर्तन करें। जितनी बार आवश्यक हो प्रतिबद्ध करें। ऐसा करें क्योंकि आप मूल्यवान इतिहास बनाएंगे। उदाहरण के लिए आप किसी समस्या के दृष्टिकोण का प्रयास कर सकते हैं और यदि यह काम नहीं करता है, तो इसे छोड़ दें। यदि एक दिन बाद आप प्रकाश देखते हैं और समाधान को दोबारा लागू करना चाहते हैं, तो यह आपके इतिहास में है!
  5. जब सुविधा पूरी तरह से विकसित और परीक्षण की जाती है, चेकआउट मास्टर।
  6. Git featureBranch विलय
  7. Git धक्का मूल मास्टर
  8. टेस्ट धक्का दिया अपने विकास सर्वर पर बदल जाता है। यह वह क्षण है जिसे आप हर टेस्ट चलाने के लिए सोच सकते हैं।
  9. यदि सभी काम कर रहे हैं, तो सुविधा को मर्ज करें या स्थिर शाखा में ठीक करें। अब परिवर्तन आपके ग्राहकों के लिए लाइव है।

सर्वर को अद्यतन सर्वर

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

[संपादित करें]

इस प्रतिक्रिया का टिप्पणी में पूछा पिछले सवाल के जवाब में:

मैं पता नहीं है कि मैं आपके प्रश्न को सही तरीके से समझता हूं, लेकिन मूल रूप से (थोड़ा सा सरलीकृत) इस तरह मैं यह करूँगा, क्या मैं तुम्हारे जूते में था। Example setup

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

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

वास्तविक कोडिंग

एक नई सुविधा चाहता था किया जाता है, एक स्थानीय सुविधा शाखा वर्तमान मास्टर के आधार पर बनाया जा सकता है। जब शाखा की जांच की जाती है तो परिवर्तन डेवलपर द्वारा स्थानीय रूप से किए जा सकते हैं और चेक किया जा सकता है (क्योंकि सॉफ्टवेयर अब फीचर शाखा के स्रोत पर चल रहा है)।

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

अब जो कुछ भी बचा है वह आपकी लाइव मशीनों को खींच रहा है।

+0

उस उत्तर के लिए आपको बहुत बहुत धन्यवाद - बहुत उपयोगी। सर्वर दृष्टिकोण से, फ़ाइलों का अपलोड/डाउनलोड कैसे काम करेगा? PHP में परीक्षण करने के लिए मुझे वास्तव में सर्वर (स्पष्ट रूप से) पर इसे देखने की ज़रूरत है, जब भी मैं काम कर रहा हूं, केवल विकास सर्वर का उपयोग करें (और आमतौर पर एफ़टीपी होना चाहिए?) धन्यवाद! –

+0

सर्वर के दृष्टिकोण से, मैं उन्हें वहां जानकारी खींचने के लिए गिट होगा। मैं उत्तर में अधिक विस्तृत जानकारी जोड़ूंगा – hoppa

+0

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

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