2009-02-24 14 views
19

मैं जानना चाहता हूं कि मैं अपनी एक कार्यशील प्रतिलिपि के लिए दो रिपॉजिटरीज़ कैसे सेट कर सकता हूं। मुझे अपने सर्वर में एक भंडार की आवश्यकता है, ताकि मैं दो पीसी के बीच में/बाहर जांच कर सकूं; मुझे अपने स्थानीय पीसी में एक और भंडार की आवश्यकता है, ताकि मैं जल्दी से diff का परिणाम देख सकूं (मेरा svn सर्वर धीमे साझा होस्ट पर है)एसवीएन: एक कामकाजी प्रति, दो भंडार?

मैं यह कैसे कर सकता हूं?

+0

पैच सबमिट करते समय यह ओपन सोर्स प्रोजेक्ट्स के लिए उपयोगी है, लेकिन किसी और को बनाने से पहले इसे अनुमोदित होने की प्रतीक्षा नहीं करना चाहता। – dbkk

+0

आजकल अधिकांश परियोजनाएं गिट का उपयोग करती हैं, जो मैंने किया था, ने एक जीआईटी भंडार और सबवर्जन का क्लोन किया था। मैं गिट कॉपी को अपडेट करने में सक्षम हूं और इसे कम संघर्ष के साथ अद्यतनों के साथ-साथ अपने परिवर्तनों को बनाए रखने में सक्षम हूं। सोचा था कि यह आपको एक टिप देगा! – asyncwait

+0

संभावित डुप्लिकेट [क्या मेरे पास दो एसवीएन रिपॉजिटरीज़ में एक प्रोजेक्ट हो सकता है?] (Http://stackoverflow.com/questions/425975/can-i-have-one-project-in-two-svn-repositories) – JasonMArcher

उत्तर

11

repository replication पर एक नज़र डालें।

आप समय-समय पर एक भंडार से दूसरे में सिंक करने के लिए एक क्रॉन नौकरी स्थापित कर सकते हैं। लेकिन आपको यह सुनिश्चित करना होगा कि केवल दो में से एक के साथ ही होता है।

प्रतिबद्ध दोनों खजाने का क्या होगा, शायद एक वितरित संस्करण प्रणाली ऐसी git, Bazaar या Mercurial के रूप में और अधिक अपने गली है? गिट, एक के लिए, आपको खींचने और सीधे एक सबवर्जन रिपोजिटरी पर धक्का देता है।

1

यदि आपका स्थानीय बॉक्स लिनक्स है, तो आप पृष्ठभूमि में सर्वर के साथ समन्वयित रखने के लिए प्रत्येक एक्स मिनट में svn अद्यतन करने के लिए crontab प्रविष्टि बना सकते हैं। वहां से आपके पास अलग-अलग स्थानीय एसवीएन सर्वर पर सबसे हालिया प्रतिलिपि होगी।

7

सबवर्जन अपने diff ऑपरेशन के लिए नेटवर्क एक्सेस का उपयोग नहीं करता है। यह सीवीएस पर सबवर्जन के महान लाभों में से एक है। तो मुझे यकीन नहीं है कि आप उस विशिष्ट समस्या का सामना क्यों करेंगे।

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

+1

यह है मूल संस्करण प्रतिलिपि में स्थानीय संस्करण को अलग करने का केवल एक स्थानीय ऑपरेशन। यदि आप पहले के संशोधन में भिन्न हैं तो यह एक रिमोट ऑपरेशन है। – Evan

+0

अनुमोदित, स्थानीय अंतर यह है कि आप 90% समय करते थे, लेकिन सवाल ने निश्चित रूप से निर्दिष्ट नहीं किया था। – Evan

3

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

1

आप svk का उपयोग अपने स्थानीय क्लाइंट के रूप में svn के बजाय करने का प्रयास कर सकते हैं। एसवीके एसवीएन भंडारों का उपयोग कर एक छद्म-वितरित संस्करण नियंत्रण प्रणाली है।

आप भंडार का दर्पण स्थापित करने के लिए svk का उपयोग करेंगे, इसे सिंक्रनाइज़ करें, और आप अपने दिल की सामग्री में भिन्न हो सकते हैं, जितना आप चाहें उतने संशोधन कर सकते हैं और यह सब स्थानीय है।

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

दो चेतावनियां:

  1. कमांड लाइन का उपयोग करने के लिए तैयार रहें। मेरे ज्ञान के लिए कोई TortoiseSVK या अन्य जीयूआई नहीं है।
  2. मैंने केवल लिनक्स पर svk का उपयोग किया है। यदि आप विंडोज़ का उपयोग कर रहे हैं, तो मुझे यकीन नहीं है कि ग्राहक कितना अच्छा है।

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

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

+0

+1 स्विस सेना चाकू समानता –

0

मुझे विश्वास नहीं है कि मानक भंडार प्रतिकृति आपको जो चाहें वह देगी। उस सेटअप के साथ, एक प्रॉक्सी हमेशा पढ़ा जाता है, और मुझे आपकी स्थिति में ऐसा नहीं लगता है।

आपको चेकइन से ठीक पहले आप जिस रेपॉजिटरी को देख रहे हैं उसे स्विच करने के लिए आपको svn switch --relocate चीज़ करना होगा। कुछ हद तक त्रुटि प्रवण।

आप क्या कर रहे हैं write through proxy है।

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

0

svn diff का परिणाम सर्वर से आपके कनेक्शन की गति पर निर्भर नहीं है; यह एक पूरी तरह से स्थानीय ऑपरेशन है।

1

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

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