2009-12-06 18 views
14

के लिए गिट वर्कफ़्लो मैं एक ऐसी कंपनी के लिए काम करता हूं जो लिनक्स का उपयोग करके एम्बेडेड सिस्टम बनाता है। ऐतिहासिक रूप से हमने हमेशा हमारे कर्नेल कार्य को स्टोर करने के लिए सीवीएस का उपयोग किया है। हमारे कर्नेल अंत का संग्रह किया जा रहा है: लिनक्स के टुकड़े हम के लिए लिनक्स अनुरूप बनाने के लिए कॉर्पोरेट लिनक्स कर्नेल विकास

  • गैर मालिकाना हार्डवेयर ड्राइवरों
  • रैंडम yukky हैक्स का उपयोग करने के लिए हमारी मालिकाना हार्डवेयर के लिए

    • ड्राइवर
    • रैंडम फिक्स हमारे आवेदन

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

    मैं एक समझदार वर्कफ़्लो के साथ आने के लिए संघर्ष कर रहा हूं। मैंने अपने सीवीएस भंडार को हमारे कर्नेल में से एक के लिए निर्यात किया है और उपयुक्त आधार लिनस कर्नेल के शीर्ष पर परिवर्तनों का संग्रह किया है। मैं यहाँ से कहाँ जाऊँ?

    मैं एक केंद्रीय भंडार रखना चाहता हूं कि सभी डेवलपर इसमें परिवर्तन करें। क्या हमारे नए बदलावों को नए बेस कर्नेल संशोधन में आगे बढ़ाने के लिए रीबेस का उपयोग करना सुरक्षित है और फिर हमारी विकास नई केंद्रीय शाखा के शीर्ष पर की जा सकती है?

    कार्यप्रवाह प्राप्त करने के लिए बोनस अंक जो हमें अपस्ट्रीम के लिए उपयुक्त परिवर्तनों को आसानी से अलग करने की अनुमति देता है। मैं छोटे (या छोटे) आम तौर पर उपयोगी परिवर्तनों के संग्रह को धक्का दे रहा हूं।

  • उत्तर

    8

    रीबेस integrating upstream branches के लिए किसी की स्थानीय शाखा में अच्छा है, बशर्ते कोई स्थानीय शाखा नहीं कहता है (क्योंकि उस स्थानीय शाखा के इतिहास को फिर से लिखा गया है)। उदाहरण के लिए देखें "git workflow and rebase vs merge questions"

    धक्का देने के लिए प्रासंगिक परिवर्तन merge/cherry-pick के लिए एक समर्पित "सार्वजनिक" शाखा (यानी धक्का दिया जाना चाहिए) प्रत्येक डेवलपर गिट भंडार में समर्पित होना चाहिए।
    संभावित रूप से, कई सार्वजनिक शाखाएं एक साथ कर्नेल संस्करण को बनाए रखने/ठीक करने के लिए एक कर्नेल संस्करण को सह-अस्तित्व में रख सकती हैं।

    तब एक केंद्रीय रेपो को उसमें धकेलने वाली सभी डेवलपर शाखाओं को एकीकृत करने के लिए सेट किया जा सकता है (यानी खींच लिया जाता है)।

    मर्ज वर्कफ़्लो और प्रकाशन विषयों पर अधिक के लिए "git releases management" भी देखें।

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