2011-02-25 12 views
7

जहां मैं एक पर्सफोर्स पर्यावरण का उपयोग करता हूं लेकिन हमें तब तक जांच करने की अनुमति नहीं है जब तक कि हमारी सुविधाएं पूरी नहीं हो जातीं और परीक्षण के लिए तैयार हो जाती है। मुझे स्थानीय काम करने में सक्षम होना चाहिए क्योंकि कभी-कभी मेरे पास मेरे परिवर्तनों पर किसी भी संस्करण के बिना एक सप्ताह के लिए 50 फाइलें ऊपर की गई थीं।रिमोट कमिट्स के लिए पी 4 का उपयोग करते समय मैं स्थानीय प्रतिबद्धताओं के लिए गिट कैसे स्थापित कर सकता हूं?

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

मेरे लक्ष्य हैं:

  • किसी सुविधा पर काम कर रहा और के रूप में ज्यादा प्रतिबद्ध के रूप में मैं खुश (Git में) और संपादित पूरी तरह से लाज़िमी अनदेखी करने के लिए सक्षम होने के लिए करना चाहते हैं।
  • एक सुविधा भेजने से पहले, मैं जरूरत फ़ाइलों diff को P4V या P4Win में जाते हैं और यकीन है कि सारी चीज़ें अद्यतित है, और परीक्षण के बाद मैं अपने सभी परिवर्तनों एक में होना चाहते हैं करने में सक्षम हो एकल प्रतिबद्धता

यह मेरी स्थानीय कार्यक्षेत्र काम करेगा की मूल निर्देशिका में एक Git भंडार बनाने की तरह लगता है, लेकिन मैं कुछ मुद्दों है ...

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

क्या कोई मुझे इस बारे में कुछ सुझाव दे सकता है? मैं गिट रेपो के आकार को कम करने के तरीके के रूप में गिट में पनडुब्बियों को देख रहा हूं क्योंकि पेर्सफोर्स रेपो के बहुत सारे भाग हैं जिन्हें मुझे संस्करण की आवश्यकता नहीं है।

+0

यदि Mercurial एक विकल्प है तो मैं [Perfarce] (http://mercurial.selenic.com/wiki/PerfarceExtension) प्लगइन की अनुशंसा करता हूं। – rjnilsson

उत्तर

0

मैं स्टारटाम और गिट के साथ काम पर वही काम करता हूं। मैं perforce वाक्यविन्यास से परिचित नहीं हूँ, लेकिन अवधारणाओं से मेल खाना चाहिए।

सबसे पहले, शुरुआती गिट प्रतिबद्ध हमेशा धीमा होता है। उसके बाद, स्टेजिंग के लिए बदली गई फ़ाइलों को स्कैन करने में 5-10 सेकंड लग सकते हैं, लेकिन प्रतिबद्धता लगभग हर समय लगभग तुरंत होनी चाहिए। संदर्भ के लिए, हमारे कोड बेस में लगभग 50,000 संस्करण वाली फ़ाइलें हैं।

मैं master स्टारटेम के साथ समन्वयित रहता हूं, लेकिन इसमें सीधे कोई भी विकास कार्य नहीं करता है। मैं git checkout master करता हूं, फिर स्टारटेम अपडेट करें, फिर एक गिट जोड़ें और प्रतिबद्ध करें।

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

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

+0

ऊपर जैसा ही सवाल है, यह सुनिश्चित न करें कि स्टैक ओवरफ़्लो शिष्टाचार इस पर है, लेकिन मुझे लगता है कि अगर मैं यहां जवाब नहीं देता तो आपको अधिसूचित नहीं किया जाएगा, इसलिए यहां सवाल फिर से है: हां, मैंने यह कोशिश की है, लेकिन वहां सिंक में पी 4 और गिट रखने के साथ में कठिनाई है। पी 4 मुझे छूने वाली चीज़ों को देखना पसंद करता है, जबकि गिट वास्तव में उस परवाह नहीं करता है जब तक कि मैं अपना समय प्रतिबद्ध नहीं करता। मैं दोनों को कैसे एकीकृत कर सकता हूं ताकि सभी फाइलें केवल पढ़ने के लिए न हों और जब मैं गिट में शाखाएं स्विच करता हूं, तो पी 4 चेक आउट फाइलें (या इससे भी बेहतर, उन्हें अलमारियों) जारी करता है? – Sky

+0

और यह इसके लिए पोस्ट है http://stackoverflow.com/questions/6591744/using-git-locally-then-merging-and-checking-into-starteam – orkoden

0

यहां एक कच्चा समाधान है। p4 से सिंक करने के बाद, उस निर्देशिका में git init करें, सभी फ़ाइलें जोड़ें और उन्हें प्रतिबद्ध करें। अपने काम को पूरी तरह से गिट को अनदेखा करें और फिर उन्हें p4 में जोड़ें और प्रतिबद्ध करें।

यह और कुछ संबंधित चीजें this question में चर्चा थीं।

+0

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

+0

नहीं, पी 4 आपके समन्वयित संशोधन को गड़बड़ कर देगा, यह आपको बताएगा, सबकुछ बदल गया है। इसके बजाए गिट-पी 4 का प्रयोग करें। –

1

आपको git-p4 के साथ जाना चाहिए। यह answer भी सहायक हो सकता है।

+0

क्या गिट-पी 4 गिट-एसवीएन (अनिवार्य रूप से एसवीएन की जगह) की तरह काम करता है, या क्या यह सिर्फ उनके बीच समन्वय करता है ताकि मैं पी 4 वी में परिवर्तन सूचियों को देख सकूं और इसके बजाय जमा कर सकूं? – Sky

+0

और एक और सवाल, गिट-पी 4 के साथ मैं कई छोटे परिवर्तकों के स्थानीय इतिहास को रख सकता हूं, जबकि पेर्सफोर्स के लिए मेरी प्रतिबद्धता सिर्फ एक मोनोलिथिक चेंजलिस्ट में है? – Sky

+0

और इसके साथ एक और समस्या यह है कि ऐसा लगता है कि हार्ड डिस्क पर एक अलग जगह में गिट रेपो होने की आवश्यकता है, जो कोड के लिए ठीक हो सकता है लेकिन स्क्रिप्ट/एसेट फाइलों के लिए काम नहीं करेगा। – Sky

0

जैसा कि आप पी 4 वी का उपयोग कर रहे हैं, मैं आपको कम से कम अपेक्षाकृत नए offline support विकल्प का प्रयास करने की सलाह दूंगा। यह आपको जो कुछ भी मांग रहा है उसके लिए आपको अनुमति देता है (गिट का उपयोग करने के अलावा)।

1

मैं वर्तमान में वास्तव में इस वर्कफ़्लो का उपयोग कर रहा है और यह बहुत ही शानदार

कॉर्पोरेट कारणों मैं Git-पी 4 आदेशों का उपयोग नहीं कर सकते है, लेकिन मैं अपने ग्राहक कार्यक्षेत्र निर्देशिका के अंदर एक Git रेपो रहने वाले मिल गया है। हमारे सेटअप में कॉन्फ़िगरेशन-कोड-केवल स्रोत नियंत्रण में चेक किया गया है, शेष ज़िप सेटअप को ज़िप में संग्रहीत किया गया है। इस प्रकार मैं वर्कस्पेस रूट पर किसी भी तरह से मेल नहीं खाता हूं, जिसमें अतिरिक्त बोनस .git को अनदेखा करने की आवश्यकता नहीं है।

अपने अंक को संबोधित करते:

  1. प्रारंभिक प्रतिबद्ध speediest होने की उम्मीद की जा सकती ... ठीक है, नहीं। यह मौजूदा रेपो क्लोनिंग नहीं कर रहा है, यह स्क्रैच से एक बना रहा है।

  2. कभी कभी मैं

    git checkout master && p4 sync && git add --all . && git commit -mupdate && git checkout feature-branch 
    

    बचा लेंगे + प्रतिबद्ध है कि मैं क्या कर रहा हूँ पर काम कर रहा है, और फिर हैक करने के लिए जारी। विलय पर्सफोर्स की तुलना में गिट में चिकनी है, इसलिए आम तौर पर आपको संघर्षों के कारण फोकस नहीं करना पड़ेगा। @p4mataway ने मुझे बताया कि वे बेहतर विलय पर काम कर रहे हैं, हालांकि, यह देखने के लिए साफ रहेगा।

  3. मैं 'allwrite' कार्यक्षेत्र विकल्प चालू (नहीं रखते असंपादित फ़ाइलें केवल पढ़ने के लिए) और जब मैं में कुछ जाँच करने के लिए तैयार हूँ, मैं master करने के लिए नीचे है कि शाखा विलय करेंगे और फिर P4V में मिलान करें । मैं कमांड लाइन से भी ऐसा करूंगा, लेकिन कॉर्पोरेट कारण फिर से। लम्बी कहानी।

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

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