2009-06-25 20 views
5

मैंने कोडप्लेक्स से सबवर्सन प्रोजेक्ट के साथ काम करने में एक समस्या में अपना स्वयं चित्रित किया है - इसके लिए मैंने here सहायता के लिए कहा था। मेरे पास एक स्थानीय भंडार है और कोडप्लेक्स के पास यह परियोजना के लिए इंटरनेट भंडार है, और दोनों मिश्रण नहीं करते हैं :-(कोड विकसित करते समय इंटरनेट सबवर्जन श्वसन का उपयोग कैसे करें?

लेकिन मेरे प्रिय पिताजी ने मुझे यह बताने के लिए प्रयोग किया कि एक चालाक आदमी और बुद्धिमान व्यक्ति के बीच का अंतर यह है कि बुद्धिमान व्यक्ति जाल में प्रवेश नहीं करता है, एक चालाक आदमी अपना रास्ता खोजता है। दूसरे शब्दों में: मैं कुछ गलत कर रहा होता। इसलिए:

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

ऑपरेशन की यह विधि मुझे सामान्य समझ में प्रतीत होती है, लेकिन फिर मैंने कभी भी ओपन सोर्स प्रोजेक्ट पर काम नहीं किया है। तो: 1. क्या यह वास्तव में ऑपरेशन का एक सामान्य तरीका है और 2. आप परेशानी के बिना सबवर्सन के साथ ऐसा करने के बारे में कैसे जाते हैं?

+0

ऐसा लगता है कि सामान्य उत्तर मेरे लिए गिट जैसे वितरित संशोधन नियंत्रण प्रणाली का उपयोग करना है। इसका मतलब यह है कि आप सुझाव दे रहे हैं कि मैं कोडप्लेक्स के साथ काम करता हूं, जिस तरह से कोडप्लेक्स गॉड्स ने योजना बनाई है। मैं समझता हूं और मैं आपको सभी का धन्यवाद करता हूं। हालांकि, क्या मेरा एमओ मानक से अलग है? क्या ऊपर दिए गए मेरे दो प्रश्नों के उत्तर हैं: 1. नहीं और 2. आप नहीं कर सकते? कोडप्लेक्स/सबवर्जन के साथ हर कोई किस तरह काम कर रहा है, इसलिए उन्हें गिट का उपयोग करने की आवश्यकता नहीं है? – Avi

उत्तर

1

बाहरी स्रोत ("विक्रेता बूंदों") में परिवर्तन को अपने स्थानीय भंडार में अवशोषित करना एसवीएन पुस्तक में अनुभाग Vendor Branches में शामिल है।

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

0

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

आप स्थानीय रूप से काम करने में सक्षम होना चाहते हैं, और दूसरी विचार के बिना शाखा या विलय करना चाहते हैं। आप मूल रूप से वितरित संस्करण नियंत्रण के बारे में बात कर रहे हैं। सबवर्सन इसका समर्थन नहीं करता है। आपको इसके बजाय Mercurial या Git जैसे कुछ उपयोग करना चाहिए।

0

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

आपका दूसरा विकल्प भंडार से फ़ाइलों को निर्यात करना और अपनी खुद की भंडार में जोड़ना है। लेकिन यह केवल भविष्य में दर्द होने जा रहा है।

+0

मैं मूल (कोडप्लेक्स) भंडार की शाखा कैसे बना सकता हूं? मैं इसे "स्वामित्व" नहीं करता हूं। – Avi

0

वितरित स्रोत नियंत्रण प्रणाली, जैसे गिट के साथ यह बहुत आसान है।

तो आपके पास स्थानीय गिट भंडार हो सकता है, सार्वजनिक रिपो से अपडेट प्राप्त करने के लिए गिट-एसवीएन का उपयोग कर सकते हैं, और अपनी विशेष शाखाओं को अपने विशेष बदलावों के साथ प्राप्त कर सकते हैं।

आप इस तरह कई परियोजनाओं GitHub पर (विस्तार तोड़फोड़ एड ओएसएस Git का उपयोग कर परियोजनाओं) देखेंगे - NHibernate के लिए, महल परियोजना के लिए, आदि

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

+0

आपका अंतिम अनुच्छेद पूरी तरह से मुझे एक मिनट के लिए उलझन में डाल दिया। इसे तीसरे बार फिर से पढ़ना, यह समझ में आता है। धन्यवाद! एवी – Avi

0

मैं आमतौर पर एक प्रतिलिपि रखता हूं जिसे मैंने एसवीएन से नीचे लाया था जिसमें भंडार से केवल अद्यतन कोड और कोड जो मैं काम कर रहा हूं और वापस प्रतिबद्ध करने की योजना बना रहा हूं।

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

यह सब कुछ काफी साफ रखता है, क्योंकि मैं अपेक्षाकृत आसानी से कोड को अनजाने में से बचने में सक्षम हूं। मैं अपने 'बेस' एसवीएन-अपडेटेड फ़ोल्डर की ताजा प्रति बनाकर आसानी से परिवर्तनों को स्क्रैप करने में भी सक्षम हूं। नकारात्मकता यह है कि यह कई विशेषताओं पर काम करता है जो मैं एक बार अपेक्षाकृत कमजोर करने की योजना नहीं बना रहा हूं।

1

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

मैं Mercurial का उपयोग कर रहा हूं और इसे सबवर्सन उपयोगकर्ता के लिए अनुशंसा करता हूं क्योंकि इसके कई आदेश सबवर्सन में कमांड के समान हैं। इस श्रेणी में अन्य लोकप्रिय टूल में Git और Bazaar शामिल हैं।

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

  • कोई संबंधित समस्या नहीं^_^