2010-06-23 9 views
12

मैं बस Mercurial के साथ शुरू कर रहा हूं, और मैंने जोएल स्पॉल्स्की के Hg Init tutorial को पढ़ा है, जिसे मुझे पसंद आया।मैं एक निजी Mercurial भंडार को केंद्रीय सर्वर पर कैसे स्थानांतरित करूं?

मुझे आश्चर्य है: मान लें कि मेरे पास एक निजी भंडार है और मैं लगभग एक महीने तक इस पर काम करता हूं। फिर मैं तय करता हूं कि मैं इसे केंद्रीकृत करना चाहता हूं या इसे सार्वजनिक बनाना चाहता हूं, जैसे bitbucket.org पर। मैं सभी इतिहास को बरकरार रखना चाहता हूं।

सहज बात hg clone उपयोग करने के लिए होगा, लेकिन डॉक्स के अनुसार:

स्रोत के स्थान डिफ़ॉल्ट के रूप में, नए भंडार की .hg/hgrc फ़ाइल में जोड़ा जाता है प्रयोग की जाने वाली भविष्य के लिए खींचता है।

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

क्या मुझे सर्वर पर .hg/hgrc फ़ाइल को मैन्युअल रूप से ट्विक करना है? क्या मैं इसे सही तरीके से देख रहा हूं?

+2

नेड का आपका जवाब था, लेकिन एफडब्ल्यूआईडब्ल्यू यदि आपका गंतव्य एक एसएसएच: // यूआरएल है तो आप कहीं और एक नया भंडार बनाने के लिए क्लोन का उपयोग कर सकते हैं। यदि आप http: // पर सर्वर से बात कर रहे हैं तो आपको सर्वर पर 'hg init' और फिर स्थानीय से 'hg push' की आवश्यकता है। खींचने के लिए डिफ़ॉल्ट के रूप में स्रोत की सेटिंग पुश-क्लोन पर अधिकतर अप्रासंगिक है क्योंकि आप शायद उस रिमोट रेपो पर कभी भी 'खींच' नहीं लेंगे - केवल इसे दबाएं। यदि आप खुद को रिमोट रेपो मैन पर खींचते हैं तो आप .hgrc के [पथ] खंड में डिफ़ॉल्ट बदल सकते हैं। –

+0

उत्कृष्ट अंक - धन्यवाद, Ry4an। मैं देखता हूं कि सर्वर पर डिफ़ॉल्ट पुल स्थान की अपरिहार्यता के बारे में आपका क्या मतलब है। –

उत्तर

18

BitBucket's help कहना है कि वह BitBucket पर एक खाली रेपो बनाने, तो यह करने के लिए जोर दे रहा जितना आसान है:

... "भंडार बनाएं" पृष्ठ के माध्यम से एक नया खाली भंडार पैदा करते हैं। हम मान लेंगे कि इस भंडार को ब्लोंक नाम दिया गया है और http://bitbucket.org/jespern/blonk पर पाया जाना है।

अब, बस यह करने के लिए धक्का:

$ cd ~/Work/blonk # our existing hg repository 
    $ hg push http://bitbucket.org/jespern/blonk 
    ... 

हो गया!

आप अपने भंडार में/hgrc .hg संपादित Bitbucket को डिफ़ॉल्ट पथ शामिल करने के लिए कर सकते हैं:

$ cat .hg/hgrc 
    [paths] 
    default = http://bitbucket.org/jespern/blonk 

अब आप बस पूर्ण URL निर्दिष्ट किए बिना ही एचजी धक्का और एचजी पुल डाल सकते हैं।

4

वर्णित 'एचजी पुश' का उपयोग करके इस ऑपरेशन को करने के लिए, संभवत: ऐसा करने का सबसे अच्छा तरीका है।

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

उदाहरण के लिए, यदि आपके पास example.com पर किसी मशीन पर एसएसएच पहुंच है, तो आप 'निजी' भंडार में अपनी .hg निर्देशिका को टैर (या ज़िप) कर सकते हैं, इसे 0pरिमोट मशीन पर अनपैक करें (इस प्रकार एक निर्देशिका ~/repo/foo/.hg वहाँ बनाने), और फिर बस इस क्लोन:

$ hg clone ssh://example.com/repo/foo 

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

+0

धन्यवाद, नॉर्मन। दिलचस्प विकल्प। –

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