बाज़ार और एसवीएन इंटरैक्शन के लिए परिदृश्य


1

हमारी कंपनी में हम एसवीएन रिपॉजिटरी का उपयोग कर रहे हैं। मैं दोनों काम (मुख्य स्थान) और घर (ज्यादातर प्रयोगों और रीफैक्टरिंग) से प्रोग्रामिंग कर रहा हूं। वे दो अलग-अलग मशीनें हैं, अलग-अलग नेटवर्क में और लगभग कभी भी एक ही समय में चालू नहीं होती हैं (आखिरकार मैं या तो काम पर हूं या घर पर ...)

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


मैं जिन विशेषताओं को प्राप्त करना चाहता था, वे थीं:

  1. SVN रिपॉजिटरी से अपडेट करने और इसके लिए प्रतिबद्ध होने में सक्षम।
  2. किसी कार्य पर मेरे कार्य के स्थानीय चरणों को करने में सक्षम होना।
  3. अपनी स्थानीय शाखाओं में एक ही समय में कुछ अलग कार्य करने में सक्षम होना।
  4. मेरे काम और घर के कंप्यूटर के बीच उन शाखाओं को साझा करने में सक्षम होने के नाते।

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

यह परिवहन बाज़ार-आधारित होना चाहिए (या कभी-कभी मैं किसके साथ समाप्त हो जाऊंगा) इसलिए इसे अधिक या कम स्वचालित रूप से किया जा सकता है, लेकिन कुछ फ़ोल्डरों को कॉपी करना और पेस्ट करना या पैच फ़ाइलों को उत्पन्न करना (वे काम करेंगे - मुझे पैच फ़ाइलों के साथ बुरा अनुभव है) SVN में) बेहतर समाधान नहीं होने पर भी काम करेगा।

फिर भी पेन-ड्राइव का उपयोग केवल परिवहन के लिए किया जाना चाहिए। मैं वहां संपादित या निर्माण नहीं करना चाहता।


मैंने SVN के साथ एकीकरण के लिए बाज़ार दिशानिर्देशों का पालन करने की कोशिश की। लेकिन मैं असफल रहा। मैंने दोनों को आजमाया

bzr svn-import

तथा

bzr checkout

दोनों के रूप में मेरे भंडार से URL प्रदान करना https://... तथा svn+https://...। कुछ मामलों में प्रमाणपत्रों के साथ इसके कुछ मुद्दे थे लेकिन आउटपुट ने उन्हें अनदेखा करने के लिए तर्क दिया ताकि मैंने ऐसा किया। कभी-कभी इसने मुझे लॉग इन करने के लिए कहा (अन्य मामलों में शायद यह याद रहे ... मुझे नहीं पता) जो मैंने किया।

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


बाज़ार से मुझे क्या और कैसे करना चाहिए? क्या स्थानीय चेकआउट से एसवीएन रिपॉजिटरी को किसी तरह आयात करना संभव है (ताकि मुझे कनेक्शन ट्रंकेशन का नुकसान न हो)? मुझे बताया गया कि एक सहकर्मी जो हमारे साथ काम करता था, उसने कुछ ऐसा ही किया है (पूरे इतिहास के साथ SVN रिपॉजिटरी आयात करना) कुछ ही समय में मर्क्यूरियल के साथ। इसलिए मैं गंभीरता से विचार कर रहा हूं कि अब मर्क्यूरियल की कोशिश कर रहा हूं, भले ही यह देखने के लिए कि क्या यह काम करेगा।

लेकिन यह भी सूचीबद्ध सुविधाओं को प्राप्त करने के लिए आपके सामान्य दिशानिर्देश क्या हैं?


मैंने पहले ही (अभी-अभी) मर्क्यूरियल की कोशिश की है लेकिन ऐसा लगता है कि एसवीएन के लिए प्रत्यक्ष समर्थन नहीं है और उनके विकी ने चेतावनी दी है कि प्लग-इन के माध्यम से मौजूदा समर्थन तैयार नहीं है। फिर भी मैंने इसे एक कोशिश देने का फैसला किया, लेकिन मैं प्लग-इन स्थापित करने में विफल रहा। मैं "विंडोज-तरह का आदमी हूँ"। मुझे डबल क्लिक करने और सब कुछ करने के लिए एक exe / msi फ़ाइल रखना पसंद है। जबकि hgsubversion (यह एक मैंने कोशिश की) डाउनलोड करने और निर्माण के स्रोतों के साथ निर्देश स्थापित करने में। मैंने डाउनलोड किया जो "बाइनरी" की तरह लग रहा था फिर भी मैं इसे खोजने और विस्तार को सक्षम करने में असफल रहा। मैंने हार मान ली (अभी के लिए)।
Adam Badura

फिर मैं सिर्फ याद दिलाने के लिए Git में चला गया कि इसे Cygwin या msysGit की आवश्यकता थी। लेकिन फिर भी मैं इसे अभी कोशिश करूंगा। (उस डाउनलोड पृष्ठ का उल्लेख नहीं करना है code.google.com/p/msysgit/downloads/list स्पष्ट नहीं है कि क्या डाउनलोड करना है अगर मुझे नवीनतम स्थिर संस्करण चाहिए क्योंकि कुछ अंतिम संस्करण बीटा के रूप में टैग किए गए हैं ...)
Adam Badura

मैं उपयोग एचजी + hgubversion बड़े सिरदर्द के बिना।
Lazy Badger

पढ़ने के लिए बस कुछ URL (गैर-अंग्रेज़ी छोड़ दी गई) बाजार क्यों नहीं पवित्र युद्ध नहीं - सिर्फ कुछ मुख्य तथ्य
Lazy Badger

जवाबों:


1

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

ऐसा लग रहा है bzr svn-import आदेश सबवर्सन से सभी शाखाओं का आयात करता है, जो कि शायद आप नहीं चाहते हैं। यह एक तोड़फोड़ चेकआउट से आयात करना संभव नहीं है क्योंकि तोड़फोड़ स्थानीय स्तर पर पूरे इतिहास को नहीं रखता है।

चूंकि आप कई शाखाओं का उपयोग करना चाहते हैं, इसलिए आपको सबसे पहले डिस्क स्पेस और ब्रांचिंग के समय को बचाने के लिए एक साझा भंडार बनाना चाहिए।

bzr init-repo ~/project

तब का उपयोग करें bzr checkout अपने तोड़फोड़ ट्रंक से एक चेकआउट बनाने के लिए आदेश। प्रोजेक्ट ट्रंक में सबवर्सन URL निर्दिष्ट करें।

cd ~/project
bzr checkout https://svn.example.com/project/trunk trunk

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

जब आप कुछ बदलाव करना चाहते हैं, तो अपने स्थानीय ट्रंक से एक नई शाखा बनाएं।

cd ~/project
bzr branch trunk fix-some-bugs

~ / प्रोजेक्ट / फिक्स-कुछ बग्स में काम करें और जैसे-जैसे आप आगे बढ़ेंगे। यह सब स्थानीय रूप से होगा और तोड़फोड़ ट्रंक को प्रभावित नहीं करेगा। आप जितनी चाहें उतनी शाखाएं बना सकते हैं।

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

cd ~/project/trunk
bzr pull
bzr merge ../fix-some-bugs
bzr commit

यह शाखा में आपके द्वारा किए गए सभी परिवर्तनों को तोड़फोड़ में एक ही संशोधन के रूप में प्रतिबद्ध करेगा (भले ही आपने शाखा में कई कमिट किए हों)।


0

बाधित चेकआउट जारी रखने का एक तरीका है। यदि आप एक साझा रिपॉजिटरी बनाते हैं, और फिर उसके अंदर चेकआउट शुरू करते हैं, तो यदि चेकआउट बाधित होता है, तो आप अपूर्ण डेटा के साथ निर्देशिका को हटा सकते हैं और चेकआउट कमांड को दोहरा सकते हैं। ऐशे ही:

bzr init-repo ~/project
cd ~/project
bzr checkout https://svn.example.com/project/trunk
# ... gets interrupted ...
rm -fr trunk
bzr checkout https://svn.example.com/project/trunk

जब तक लग रहा है चेकआउट दोहराएं।

Btw, चेकआउट पहली बार में बहुत धीमा है, क्योंकि यह पूरा इतिहास डाउनलोड करता है। यही कारण है कि आप केवल एक स्थानीय तोड़फोड़ चेकआउट आयात नहीं कर सकते, क्योंकि तोड़फोड़ केवल एक ही संशोधन डाउनलोड करती है, जिसमें पूरा इतिहास नहीं है।

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.