यह कुछ मैं पिछले कुछ हफ्तों से अधिक काम कर रहा हूं। यह अभी भी विकसित हो रहा है, लेकिन यह मददगार हो सकता है। कृपया ध्यान दें कि मैं एक Perforce कर्मचारी हूँ।
Git उपयोगकर्ताओं के लिए Perforce का परिचय
यह कहना कि Git से Perforce या Perforce से Git में जाना गैर-तुच्छ है, एक भव्य समझ है। दो उपकरण होने के लिए जो कि एक ही चीज़ को अस्थिरता से करते हैं, उनका दृष्टिकोण अधिक भिन्न नहीं हो सकता है। यह संक्षिप्त लेखन नए पेरफोर्स उपयोगकर्ताओं को Git से आने वाले नए दुनिया को समझने में मदद करने की कोशिश करेगा जो वे अंदर हैं।
हम में गोता लगाने से पहले एक संक्षिप्त चक्कर; यदि आप Git पसंद करते हैं तो आप Git का उपयोग Perforce के साथ काफी अच्छी तरह से कर सकते हैं। हम Git Fusion नामक एक टूल प्रदान करते हैं जो Git रिपॉजिटरी को उत्पन्न करता है जिसे Perforce सर्वर के साथ सिंक में रखा जाता है। Git और Perforce के लोग एक ही कोड पर काम करते हुए सामंजस्य बनाकर रह सकते हैं, जो ज्यादातर संस्करण नियंत्रण के अपने सहकर्मियों की पसंद से अप्रभावित रहते हैं। Git Fusions 13.3 Perforce वेब साइट से उपलब्ध है । इसे Perforce व्यवस्थापक द्वारा स्थापित किए जाने की आवश्यकता है, लेकिन यदि आप इसे स्थापित करते हैं, तो आप पाएंगे कि इसका रिपॉजिटरी स्लाइसिंग फीचर Git उपयोगकर्ता के रूप में काफी उपयोगी हो सकता है।
यदि आप Git Fusion को स्थापित करने के लिए अपने व्यवस्थापक को मना नहीं कर सकते हैं, तो Git अपने आप में GFS-P4 नामक एक Perforce बाइंडिंग के साथ आता है जो आपको Perit कार्यक्षेत्र में फ़ाइलों को बदलने और सबमिट करने के लिए Git का उपयोग करने की अनुमति देता है। उस पर अधिक जानकारी यहां पाई जा सकती है: https://git.wiki.kernel.org/index.php/GitP4
अभी भी यहीं? अच्छा है, आइए Perforce को देखें।
कुछ शब्दावली अंतर छाँटने के लिए अंतर
इससे पहले कि हम विवरण में मिलें, हमें Git और Perforce के बीच कुछ शब्दावलियों के अंतरों को संक्षेप में कवर करना होगा।
पहला चेकआउट है । Git में यह है कि आप किसी दिए गए शाखा से कोड की एक प्रति अपने कार्य क्षेत्र में कैसे प्राप्त करें। पेरफोर्स में हम इसे कमांड लाइन या हमारे GUI P4V "गेट लेटेस्ट रिवीजन" से सिंक कहते हैं। Perforce P4V से या कमांड लाइन से चेकआउट शब्द का उपयोग करता है, जिसका p4 edit
अर्थ है कि आप संस्करण नियंत्रण प्रणाली से एक फ़ाइल को बदलने की योजना बनाते हैं। इस दस्तावेज़ के बाकी हिस्सों में, मैं शब्द के Perforce अर्थ में चेकआउट का उपयोग करूंगा।
दूसरा है Git प्रतिबद्ध बनाम Perforce सबमिट । जहां आप Git में प्रतिबद्ध होंगे, आप Perforce में जमा करेंगे। सभी ऑपरेशन साझा किए गए Perforce संस्करण सेवा के विरुद्ध होने के नाते, Perforce के लिए एक समान नहीं है git push
। इसी तरह हमारे पास नहीं है pull
; ऊपर से सिंक कमांड हमारे लिए फाइलें प्राप्त करने का ध्यान रखती है। जब तक आप संक्षेप में वर्णित हमारे P4Sandbox टूल का उपयोग करने का चयन नहीं करते हैं, तब तक Perforce में शुद्ध स्थानीय सबमिट की कोई अवधारणा नहीं है।
Perforce में प्रमुख अवधारणाएँ
अगर मैं दो प्रमुख अवधारणाओं के लिए पेरफोर्स को सरल बनाने के लिए था, तो मैं डिपो और कार्यक्षेत्र पर ध्यान केंद्रित करूंगा। पेरफोर्स डिपो उन फाइलों का भंडार है, जो एक पेरफोर्स सर्वर में रहते हैं। पेरफोर्स सर्वर में किसी भी डिपो की संख्या हो सकती है और प्रत्येक डिपो में किसी भी संख्या में फाइलें हो सकती हैं। अक्सर आपने सुना होगा कि पेरफोर्स यूजर्स डिपो और सर्वर को इंटरचेंज का इस्तेमाल करते हैं, लेकिन वे अलग-अलग होते हैं। पेरफोर्स साइट में कई सर्वर हो सकते हैं, लेकिन आमतौर पर सभी फाइलें एक सर्वर में होती हैं।
पेरफोर्स वर्कस्पेस या क्लाइंट उस सिस्टम में एक ऑब्जेक्ट है जो पेरफोर्स सर्वर में फाइलों का एक सेट किसी यूजर के फाइल सिस्टम पर किसी लोकेशन पर मैप करता है। प्रत्येक उपयोगकर्ता के पास उपयोग की जाने वाली प्रत्येक मशीन के लिए एक कार्यक्षेत्र होता है, और अक्सर उपयोगकर्ताओं के पास एक ही मशीन के लिए एक से अधिक कार्यक्षेत्र होंगे। कार्यक्षेत्र का सबसे महत्वपूर्ण हिस्सा कार्यक्षेत्र मैपिंग या दृश्य है।
कार्यस्थान दृश्य डिपो में उन फ़ाइलों के सेट को निर्दिष्ट करता है जिन्हें स्थानीय मशीन पर मैप किया जाना चाहिए। यह महत्वपूर्ण है क्योंकि एक अच्छा मौका है कि आप उन सभी फ़ाइलों को नहीं चाहते हैं जो सर्वर पर उपलब्ध हैं। एक कार्यक्षेत्र दृश्य आपको केवल उस सेट का चयन करने देता है जिसकी आपको परवाह है। यह ध्यान रखना महत्वपूर्ण है कि एक कार्यक्षेत्र कई डिपो से सामग्री को मैप कर सकता है, लेकिन केवल एक सर्वर से सामग्री को मैप कर सकता है।
इस संबंध में पेरिट्स की तुलना Git से करने के लिए, Git के साथ आप चुनें और Git repos के सेट को चुनें जिसे आप रुचि रखते हैं। प्रत्येक रेपो में आम तौर पर संबंधित फ़ाइलों को शामिल करने के लिए कसकर स्कूप किया जाता है। इसका लाभ यह है कि आपकी ओर से करने के लिए कोई कॉन्फ़िगरेशन नहीं है; आप उन चीजों का एक क्लोन क्लोन करते हैं जिनकी आप परवाह करते हैं और आप कर रहे हैं। यह विशेष रूप से अच्छा है यदि आप केवल एक या दो रिपॉजिटरी के साथ काम करते हैं। पेरफोर्स के साथ आपको अपने इच्छित कोड के बिट्स चुनने और चुनने में थोड़ा समय बिताना होगा।
कई पेरफ़ोर्स शॉप्स स्ट्रीम का उपयोग करती हैं जो स्वचालित रूप से कार्यक्षेत्र दृश्य उत्पन्न कर सकती हैं, या वे स्क्रिप्ट या टेम्पलेट वर्कस्पेस का उपयोग करके दृश्य उत्पन्न करते हैं। समान रूप से कई अपने कार्यक्षेत्रों को स्वयं उत्पन्न करने के लिए अपने उपयोगकर्ताओं को छोड़ देते हैं। एक कार्यक्षेत्र में कई मॉड्यूल को मैप करने में सक्षम होने का एक फायदा यह है कि आप आसानी से एक चेकइन में कई कोड मॉड्यूल को संशोधित कर सकते हैं; आपको इस बात की गारंटी दी जा सकती है कि एक समान क्लाइंट दृश्य वाले व्यक्ति जो आपके चेकइन के लिए सिंक करता है, उसके पास सही स्थिति में सभी कोड होंगे। यह हालांकि अत्यधिक निर्भर कोड को जन्म दे सकता है; Git की मजबूर जुदाई बेहतर प्रतिरूपता का कारण बन सकती है। शुक्र है कि Perforce भी सख्त तौर-तरीके का समर्थन कर सकता है। यह सब एक सवाल है कि आप उपकरण का उपयोग करने के लिए कैसे चुनते हैं।
कार्यस्थान क्यों?
मुझे लगता है कि जीआईटी से आने पर यह महसूस करना आसान है कि पूरे कार्यक्षेत्र की अवधारणा जिस तरह से अधिक मूल्य की है उससे अधिक परेशानी है। कुछ Git repos के क्लोनिंग की तुलना में यह निस्संदेह सत्य है। जहां कार्यस्थान चमकते हैं, और इन सभी वर्षों के बाद भी Perforce व्यवसाय में है, तो क्या यह है कि कार्यक्षेत्र डेवलपर्स के लिए मल्टी-मिलियन फ़ाइल परियोजनाओं को बंद करने का एक शानदार तरीका है, जबकि अभी भी निर्माण और रिलीज के लिए सभी स्रोतों को एक साथ खींचने के लिए आसान बना रहा है एक आधिकारिक स्रोत। कार्यस्थान एक प्रमुख कारण है जिससे पेरफोल्स को बड़ा किया जा सकता है।
कार्यक्षेत्र भी अच्छे हैं कि डिपो में फाइलों का लेआउट और जरूरत पड़ने पर उपयोगकर्ता की मशीन पर लेआउट अलग-अलग हो सकता है। कई कंपनियां अपनी कंपनी के संगठन को प्रतिबिंबित करने के लिए अपने डिपो का आयोजन करती हैं ताकि लोगों को व्यवसाय इकाई या परियोजना द्वारा सामग्री ढूंढना आसान हो। हालाँकि उनकी निर्माण प्रणाली इस पदानुक्रम के बारे में कम परवाह नहीं कर सकती थी; कार्यक्षेत्र उन्हें अपने डिपो पदानुक्रम को फिर से हटाने की अनुमति देता है जो किसी भी तरह से उनके टूल को समझ में आता है। मैंने इसका उपयोग उन कंपनियों द्वारा भी देखा है जो बेहद अनम्य बिल्ड सिस्टम का उपयोग कर रहे हैं, जिनके लिए बहुत विशिष्ट कॉन्फ़िगरेशन में कोड की आवश्यकता होती है जो पूरी तरह से मनुष्यों को भ्रमित कर रहे हैं। कार्यक्षेत्र इन कंपनियों को एक स्रोत पदानुक्रम की अनुमति देता है जो मानव नौगम्य है जबकि उनके निर्माण उपकरण को वे संरचना मिलती है जिनकी उन्हें आवश्यकता होती है।
पेरफोर्स में वर्कस्पेस का उपयोग न केवल उन फाइलों के सेट को मैप करने के लिए किया जाता है, जिनके साथ उपयोगकर्ता काम करना चाहता है, लेकिन सर्वर द्वारा उनका उपयोग ठीक से ट्रैक करने के लिए भी किया जाता है, जो उपयोगकर्ता द्वारा सिंक किए गए प्रत्येक फ़ाइल के संशोधनों के साथ होता है। यह फाइल को स्कैन करने के लिए सिस्टम को फाइल को स्कैन किए बिना उपयोगकर्ता को सही सेट भेजने की अनुमति देता है, यह देखने के लिए कि किन फाइलों को अद्यतन करने की आवश्यकता है। बड़ी मात्रा में डेटा के साथ यह एक बड़ा प्रदर्शन जीत हो सकता है। यह उन उद्योगों में भी बहुत लोकप्रिय है जिनके बहुत कठोर ऑडिटिंग नियम हैं; Perforce व्यवस्थापक आसानी से ट्रैक कर सकते हैं और लॉग इन कर सकते हैं कि डेवलपर्स ने कौन सी फ़ाइलों को सिंक किया है।
Perforce कार्यस्थानों की पूरी शक्ति के बारे में अधिक जानकारी के लिए P4 कॉन्फ़िगर करना पढ़ें ।
स्पष्ट चेकआउट बनाम निहित चेकआउट
Git से Perforce में जाने वाले उपयोगकर्ताओं के लिए सबसे बड़ी चुनौतियों में से एक स्पष्ट चेकआउट की अवधारणा है। यदि आप फ़ाइलों को बदलने के Git / SVN / CVS वर्कफ़्लो के आदी हैं और फिर संस्करण नियंत्रण प्रणाली को यह बताने के लिए कि आपने क्या किया है, तो यह एक अत्यंत दर्दनाक संक्रमण हो सकता है।
अच्छी खबर यह है कि यदि आप चुनते हैं तो आप पेरिट में एक जीआईटी स्टाइल वर्कफ़्लो के साथ काम कर सकते हैं। Perforce में आप अपने कार्यक्षेत्र पर "allwrite" विकल्प सेट कर सकते हैं। यह पेरफोर्स को बताएगा कि सभी फाइलें राइट बिट सेट के साथ डिस्क पर लिखी जानी चाहिए। आप तब स्पष्ट रूप से पेरफोर्स को बताए बिना अपनी इच्छा से किसी भी फ़ाइल को बदल सकते हैं। पेरफोर्स में उन बदलावों को समेटने के लिए जो आपने किए थे वे "पी 4 स्टेटस" चला सकते हैं। यह उपयुक्त के रूप में जोड़ने, संपादित करने और हटाने के लिए फाइलें खोलेगा। इस तरह से काम करते समय आप सर्वर से नए संशोधन प्राप्त करने के लिए "पी 4 सिंक" के बजाय "पी 4 अपडेट" का उपयोग करना चाहेंगे; यदि आपने "p4 स्थिति" अभी तक नहीं चलाई है, तो सिंक्रनाइज़ करने से पहले परिवर्तनों के लिए "p4 अद्यतन" चेक आपके स्थानीय परिवर्तनों को स्पष्ट नहीं करेगा।
क्यों चेकआउट हुआ?
एक प्रश्न जो मुझे अक्सर प्राप्त होता है, वह है "आप कभी भी स्पष्ट चेकआउट का उपयोग क्यों करना चाहेंगे?" यह पहले ब्लश पर एक पागल डिजाइन निर्णय लगता है, लेकिन स्पष्ट चेकआउट के कुछ शक्तिशाली लाभ हैं।
स्पष्ट चेकआउट का उपयोग करने का एक कारण यह सामग्री परिवर्तनों के लिए फ़ाइलों को स्कैन करने की आवश्यकता को हटाता है। जबकि अंतर खोजने के लिए प्रत्येक फ़ाइल के लिए हैश की गणना करने वाली छोटी परियोजनाओं के साथ काफी सस्ता है, हमारे कई उपयोगकर्ताओं के पास कार्यक्षेत्र में लाखों फाइलें हैं और / या ऐसी फाइलें हैं जो आकार में मेगाबाइट की 100 हैं, यदि बड़ी नहीं हैं। उन मामलों में सभी हैश की गणना अत्यंत समय लेने वाली है। स्पष्ट चेकआउट पेरफोर्स को यह जानने देता है कि उसे किन फाइलों के साथ काम करना है। यह व्यवहार उन कारणों में से एक है, जो पेरफोर्स गेम, मूवी और हार्डवेयर उद्योगों जैसे बड़े फ़ाइल उद्योगों में बहुत लोकप्रिय हैं।
एक और लाभ स्पष्ट है कि चेकआउट अतुल्यकालिक संचार का एक रूप प्रदान करता है जो डेवलपर्स को आमतौर पर यह बताता है कि उनके साथी क्या काम कर रहे हैं, या कम से कम कहां। यह आपको बता सकता है कि आप एक निश्चित क्षेत्र में काम करने से बचना चाहते हैं ताकि अनावश्यक संघर्ष से बचा जा सके, या यह आपको इस तथ्य से सचेत कर सकता है कि टीम का एक नया डेवलपर कोड में भटक गया है, जिसकी शायद उन्हें आवश्यकता नहीं है संपादन होना। मेरा व्यक्तिगत अनुभव यह है कि मैं उन परियोजनाओं पर ऑलराइट के साथ Git में या Perforce का उपयोग करने के लिए काम करता हूं, जहां मैं या तो केवल एक योगदानकर्ता या एक अनन्त योगदानकर्ता हूं, और जब मैं एक टीम के साथ कसकर काम कर रहा हूं, तो स्पष्ट चेकआउट। शुक्र है कि चुनाव आपका है।
स्पष्ट चेकआउट भी लंबित चेंजेलिस्ट की पेरफोर्स अवधारणा के साथ अच्छी तरह से निभाता है। लंबित चैंजलिस्ट बाल्टियाँ हैं जो आप अपने काम को व्यवस्थित करने के लिए अपनी खुली फ़ाइलों को रख सकते हैं। Git में आप संभावित रूप से विभिन्न शाखाओं को काम के आयोजन के लिए बाल्टी के रूप में उपयोग करेंगे। शाखाएँ बहुत अच्छी हैं, लेकिन कभी-कभी सर्वर पर सबमिट करने से पहले अपने काम को कई नाम परिवर्तन में व्यवस्थित करने में सक्षम होना अच्छा होता है। संभावित रूप से मैपिंग की कई शाखाओं या कई परियोजनाओं को एक कार्यक्षेत्र में लागू करने के Perforce मॉडल के साथ, लंबित चेंजेलिस्ट अलग-अलग परिवर्तनों को व्यवस्थित रखना आसान बनाते हैं।
अगर आप विजुअल स्टूडियो या एक्लिप्स जैसे विकास के लिए एक आईडीई का उपयोग करते हैं, तो मैं आपके आईडीई के लिए एक पर्फोर्स प्लगइन स्थापित करने की अत्यधिक अनुशंसा करता हूं। अधिकांश आईडीई प्लगइन्स स्वचालित रूप से फ़ाइलों की जांच करेंगे जब आप उन्हें संपादित करना शुरू करते हैं, तो आप स्वयं को चेकआउट करने से मुक्त करेंगे।
पेरिट्स रिप्लेसमेंट फॉर गिट फीचर्स
git stash
==> p4 shelve
- git लोकल ब्रांचिंग ==> या तो Perforce अलमारियों या कार्य शाखाओं को
git blame
==> p4 annotate
या जीयूआई से समय- सीमा देखें
काम करना बंद कर दिया
Perforce संस्करण सेवा से डिस्कनेक्ट किए गए कार्य के लिए दो विकल्प हैं (वह है Perforce सर्वर के लिए हमारा फैंसी शब्द)।
1) पूर्ण स्थानीय संस्करण और स्थानीय शाखा के लिए P4Sandbox का उपयोग करें
2) फ़ाइलों को संपादित करें जैसा कि आप कृपया और 'पी 4 स्थिति' का उपयोग करके यह बताएं कि आपने क्या किया है
उपरोक्त दोनों विकल्पों के साथ आप अपने कार्यक्षेत्र में "ऑलराइट" सेटिंग का उपयोग करने का विकल्प चुन सकते हैं ताकि आपको फ़ाइलों को अनलॉक न करना पड़े। इस मोड में काम करते समय आप "p4 सिंक" के बजाय नई फ़ाइलों को सिंक करने के लिए "p4 अपडेट" कमांड का उपयोग करना चाहेंगे। "p4 अद्यतन" उन पर सिंक्रनाइज़ होने से पहले परिवर्तनों की फ़ाइलों की जाँच करेगा।
Perforce क्विकस्टार्ट
निम्नलिखित सभी उदाहरण कमांड लाइन के माध्यम से होंगे।
1) पेरफोर्स के लिए अपने कनेक्शन को कॉन्फ़िगर करें
export P4USER=matt
export P4CLIENT=demo-workspace
export P4PORT=perforce:1666
आप इन सेटिंग्स को अपने शेल कॉन्फिग फाइल में चिपका सकते हैं, p4 set
विंडोज और ओएस एक्स पर उन्हें बचाने के लिए उपयोग कर सकते हैं या पेरफोर्स कॉन्फिगर फाइल का उपयोग कर सकते हैं।
1) एक कार्यक्षेत्र बनाएँ
p4 workspace
# set your root to where your files should live:
Root: /Users/matt/work
# in the resulting editor change your view to map the depot files you care about
//depot/main/... //demo-workspace/main/...
//depot/dev/... //demo-workspace/dev/...
2) सर्वर से फ़ाइलें प्राप्त करें
cd /Users/matt/work
p4 sync
3) उस फ़ाइल को चेकआउट करें जिस पर आप काम करना चाहते हैं और उसे संशोधित करें
p4 edit main/foo;
echo cake >> main/foo
4) इसे सर्वर पर जमा करें
p4 submit -d "A trivial edit"
5) p4 help simple
मूल आदेशों को देखने के लिए चलाएं जिन्हें आपको पेरफोर्स के साथ काम करने की आवश्यकता होगी।