2010-06-03 12 views
24

के साथ एक दूरस्थ सर्वर/भंडार में भंडार क्लोन कैसे करें इस बारे में आज मुझे काफी उलझन में मिला।Mercurial

मैं स्थानीय रूप से एक खाली भंडार (एचजी इनिट) बनाता हूं, इसे काम करने की प्रतिलिपि बनाने के लिए क्लोन किया गया, कुछ कोड जोड़ा, इसे प्रेरित किया और इसे धक्का दिया (स्पष्ट रूप से स्थानीय रेपो में)।

अब मुझे उस संग्रह को दूसरों के साथ साझा करने की आवश्यकता है। एक सर्वर है जिस पर Mercurial है, मैं अपने भंडार को रिमोट एक पर कैसे क्लोन कर सकता हूं जैसे कि अन्य डेवलपर इसे एक्सेस कर सकते हैं और कोड को पुल/पुश कर सकते हैं?

उत्तर

36

आप वेब इंटरफेस और उपयोग नियंत्रण में लाने के लिए publishing repositories विकि पृष्ठ की जाँच करना चाहते हैं, लेकिन आप कुछ इस तरह कर सकते हैं यह सबसे बुनियादी है पर:

hg clone yourlocalrepo ssh://[email protected]//home/you/repo 

एक के लिए अपने स्थानीय रेपो क्लोन है कि आपके चयन का दूरस्थ स्थान। ध्यान दें कि उस यूआरएल में दो डबल स्लेश हैं।

आप http: //, केवल ssh: // का उपयोग कर रिमोट रेपो नहीं बना सकते हैं। यदि आपके पास http है hgweb.cgi के लिए http है तो आप सर्वर पर एक रिक्त रेपो 'hg init' कर सकते हैं और फिर उसे धक्का दे सकते हैं।

+0

शांत, धन्यवाद, लेकिन अन्य लोग इसे कैसे क्लोन करते हैं? –

+0

वे सिर्फ एसएसएच: // आप @ सर्वर // होम/आप/रेपो से क्लोन कर सकते हैं अगर उन्हें आपके होमडेर से पढ़ने की अनुमति है। यदि आप इसके साथ ठीक नहीं हैं तो आप एक ऐसा क्षेत्र स्थापित कर सकते हैं जिसमें आप दोनों पढ़ और लिख सकें। इन दिनों सामान्य तकनीक को दस्तावेज करने के लिए –

7

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

उदा। मैं खिड़कियों पर विकास कर रहा हूं, और मेरा केंद्रीय भंडार लिनक्स पर चल रहा है और the official guide प्रति lighttpd द्वारा परोसा जाता है। सर्वर की केंद्रीय रेपो निर्देशिका /var/hg/repos/ है, जिसका स्वामित्व उपयोगकर्ता/समूह www-data है। मेरी स्थानीय मशीन का आईपी 10.1.10.100 है, और जिस भंडार को मैं क्लोन करना चाहता हूं उसे foo नाम दिया गया है।

  1. स्थानीय मशीन पर, रिपॉजिटरी निर्देशिका में कमांड प्रॉम्प्ट खोलें और hg serve टाइप करें। यह स्थानीय एचजी वेब सर्वर चलाता है, जो सर्वर को इससे खींचने की अनुमति देगा।
  2. केंद्रीय रेपो सर्वर में एसएसएच, www-data के सूडो अधिकार वाले उपयोगकर्ता के रूप में लॉग इन करना।
  3. cd /var/hg/repos
  4. sudo -u www-data hg clone http://10.1.10.100 foo
+0

+1 ... मैं सामान्य तकनीक से बीमार हूं, इसलिए मैं किसी भी अधिकृत मेजबान से आपके लिए एचजी क्लोन कमांड करने के लिए पाइथन में एक सीजीआई (वेब ​​पेज) लिखने की योजना बना रहा हूं। –

4

उन है कि बाद में आने के लिए और रेपोस की मेजबानी के लिए बनाया गया एक सर्वर में परिवर्तन धकेलने के लिए ssh की परेशानियों के बारे में परेशान नहीं करना चाहते हैं के लिए, तुम सिर्फ सर्वर पर init कर सकते हैं, और फिर हर दूसरे रेपो के रूप में धक्का।

# on server: 
cd repos/ 
mkdir myrepo 
cd myrepo 
hg init 
cd .. 
chown -R apache:apache myrepo 

cd .. 
vim hgweb.config 

# change [paths] 
[paths] 
myrepo = /path/to/myrepo 



# on your machine 

# make sure you've configured hgrc correctly 
[paths] 
default = http://server/hg/repos/myrepo 

hg push 

# ??? 

# profit 
+0

या तो एक सीजीआई हेल्पर-वेब-पेज में परिवर्तित होने का बुरा विचार नहीं है। सर्वर पर पहले बनाएं, खाली एक को क्लोन करें और आप सभी एक केंद्रीकृत वर्कफ़्लो के लिए सेट अप हैं। –