मैं Mercurial में दूरस्थ रिपॉजिटरी कैसे जोड़ सकता हूं?


99

मैं निम्नलिखित तरीके से Git रिपोजिटरी के साथ काम कर रहा हूं:

  • मेरे पास अलग-अलग उत्पादन मशीनों पर मास्टर भंडार और कई उपाय हैं।
  • मैं उत्पादन कोड को रीमोट में धकेल रहा हूं और परिवर्तनों को प्रभावी करने के लिए सेवाओं को फिर से शुरू कर रहा हूं।

मैं Git से Mercurial पर स्विच करने वाला हूं और मैं आगे जानना चाहूंगा कि मैं कैसे कुछ हासिल कर सकता हूं।

जवाबों:


130

आप [paths]अपने स्थानीय क्लोन की .hg/hgrcफ़ाइल के अनुभाग में प्रविष्टियाँ जोड़ते हैं । यहां उस अनुभाग का एक उदाहरण दिया गया है जो .hg/hgrcफ़ाइल में जाएगा:

[paths]
remote1 = http://path/to/remote1
remote2 = http://path/to/remote2

फिर आप hg push remote1उस रेपो में परिवर्तन भेजने के लिए कमांड का उपयोग कर सकते हैं । यदि आप चाहते हैं कि अद्यतन करने के लिए दूरस्थ रेपो कार्यशील निर्देशिका है, तो आपको changegroupउस दूरस्थ स्थान पर एक हुक लगाने की आवश्यकता होगी जो एक अद्यतन करता है। जो कुछ इस तरह दिखेगा:

[hooks]
changegroup = hg update 2>&1 > /dev/null && path/to/script/restart-server.sh

हर कोई रिमोट रिपोज होने का बड़ा प्रशंसक नहीं होता है, अपने वर्किंग डायरेक्टरी को पुश पर अपडेट करता है, और यह निश्चित रूप से डिफ़ॉल्ट नहीं है।


23
किसी के लिए भी केवल रीमोट्स का उपयोग देखना चाहते हैं hg pathsजो इसके लिए बराबर है git remote -v
कीयो

5
डिफ़ॉल्ट-पुश (उदाहरण के लिए रिमोट 1 के बजाय) एक को "एचजी पुश" टाइप करने में सक्षम बनाता है। डिफ़ॉल्ट-पुश रिपॉजिटरी का उपयोग तब किया जाता है। बहुत मददगार।
क्रिश्चियन

6
@ क्रिसियन default-pushकेवल आवश्यक / उपयोगी है यदि आपका सामान्य पुश लक्ष्य आपके सामान्य पुल स्रोत से भिन्न होता है। यदि वे समान हैं (या आप कभी नहीं खींचते हैं) तो defaultपर्याप्त है।
Ry4an Brase

2
बस इसके बारे में और भी अधिक जोड़ने के लिए: यदि आपके पास default-pushऔर defaultआपकी दोनों कॉन्फिग फाइल में हैं, तो पहले का इस्तेमाल पुश करने के लिए और बाद में खींचने के लिए किया जाएगा। यदि आप एक ही रिमोट रेपो (जो आप शायद करते हैं यदि आप एक केंद्रीकृत-तरह से मर्क्यूरियल का उपयोग कर रहे हैं) से धक्का और खींचना चाहते हैं, तो केवल defaultफ़ाइल में डालें । यह इतना अच्छा होगा यदि वे थोड़ा सा कमांड लाइन विकल्प जोड़ते हैं कि बस पहले धक्का पर ... (या शायद मैं बहुत सीवीएस व्यक्ति; ;-))
tiktak

मेरे पास अपने मैक पर Mercurial v2.6.2 स्थापित है, और पथ सेट करने के लिए फ़ाइल .hg/hgrc(फ़ाइल से पहले कोई डॉट) नहीं है।
Regis Zaleman

9

यदि आप डिफ़ॉल्ट पथ जोड़ना चाहते हैं, तो आपको defaultअपनी ~project/.hg/hgrcफ़ाइल में काम करना होगा । निम्नलिखित नुसार:

[paths]
default = https://path/to/your/repo

शुभ लाभ।


5

आप hg-git GitHub प्लगइन को देख सकते हैं :

hg-git सामान्य विचार

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

नोट: मैंने Mercurial के नवीनतम संस्करणों के साथ उस टूल का परीक्षण नहीं किया है।


1
मेरे पास हर चीज को व्यापारिक तरीके से पोर्ट करने की क्षमता है, मैं अपने स्रोत प्रबंधन के लिए केवल एक उपकरण का उपयोग करना चाहूंगा। एक बार रिपॉजिटरी उपयुक्त संरचनाओं के निर्माण और फिर उत्पादन के लिए केवल व्यापारिक आदेशों में परिवर्तित करें। मैं इस बात से अवगत हूं कि दोनों git और mercurial सहयोग कर सकते हैं लेकिन कभी भी इसकी कोशिश नहीं की।
टॉपलेस

2
^ क्रिस: तो आपका सवाल है: मैं Git repos को Mercurial वालों में कैसे परिवर्तित करूं? ", या" दूरस्थ Hg रेपो को कैसे घोषित / सेटअप किया जाए? "(जैसे superuser.com/questions/43686/… ), या" जहां a रिमोट Hg में घोषित किया गया है? "( क्रेजीथिंकिंग .wordpress.com/2009/03/07/… )
VonC

0

यदि आप यूनिक्स पर हैं और आपने Git इंस्टॉल किया है, तो आप इस बैश फ़ंक्शन का उपयोग टेक्स्ट एडिटर के बिना रीमोट्स में आसानी से जोड़ने के लिए कर सकते हैं:

add-hg-path() {
    git config -f $(hg root)/.hg/hgrc --add paths.$1 $2
    awk '{$1=$1}1' $(hg root)/.hg/hgrc > /tmp/hgrc.tmp
    mv /tmp/hgrc.tmp $(hg root)/.hg/hgrc
}

फिर इसके साथ आह्वान करें:

$ add-hg-path remote1 https://path.to/remote1

अगर कोई Powershell समकक्ष बनाना चाहता है, तो मैं उसे भी शामिल करना चाहूंगा। अन्य संभावित सुधारों में मापदंडों पर त्रुटि की जाँच और कॉल को फैक्टरिंग करना शामिल है $(hg root)

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