मर्क्यूरियल फोल्डर को Git रिपॉजिटरी में बदलना


137

मुझे मर्क्यूरियल के साथ बहुत बड़ा अनुभव नहीं है, मैं ज्यादातर एक गाइट आदमी हूं।

मैं git रिपॉजिटरी में एक विशिष्ट मर्क्यूरियल फ़ोल्डर / फ़ाइल को दर्पण करना पसंद करूंगा। जो मैं वास्तव में करने की कोशिश कर रहा हूं वह एक मर्क्यूरियल रिपॉजिटरी से एक फाइल के इतिहास को Git में एक्सपोर्ट करना है और भविष्य के कमेंट्स के साथ इसे सिंक में रखने में सक्षम है।

क्या आपके पास कोई सुझाव है कि कैसे आगे बढ़ें? मेरा मानना ​​है कि जाने का रास्ता मर्क्यूरियल पैच के इतिहास को प्राप्त करने के लिए होना चाहिए, समय-समय पर हर एक प्रतिबद्ध को पैच के रूप में निर्यात करना चाहिए और मर्क्यूरियल पैच को गिट रिपॉजिटरी में लागू करना चाहिए।


जवाबों:


125

लिनक्स या इसके साथ bash/shया इसी तरह की किसी चीज पर , या तेज निर्यात केpython साथ प्रयास करें :

cd
git clone git://repo.or.cz/fast-export.git
git init git_repo
cd git_repo
~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo
git checkout HEAD

1
ठीक है, आप मर्क्यूरियल के साथ git सिंक्रोनाइज़ करना चाहते हैं? इस तरह ?
योहन

1
ध्यान दें कि '/ path / to / old / mercurial_repo' फाइल सिस्टम (URL नहीं) पर एक पथ होना चाहिए, इसलिए आपको पहले मूल रिपॉजिटरी को क्लोन करना होगा।
mar'१३

1
मेरे मामले में उपयोग करना था PYTHON=python2 ~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo। इसके अलावा, यह निर्दोष रूप से काम किया।
अर्तुर कज्जाका

5
संक्षिप्त उत्तर के लिए धन्यवाद! मुझे पहले करना पड़ा sudo easy_install mercurial। निर्देश में अच्छा लगेगा
मार्कस वेस्टिन

3
यदि आप विंडोज मशीन पर हैं तो Git bash का उपयोग करें और hg-fast-export.sh
Augustas

61

Windows: TortoiseHG Hg-Git एक्सटेंशन

Hg-Git का उपयोग एक Mercurial रिपॉजिटरी को Git में बदलने के लिए किया जा सकता है। आप एसएसएच, एचटीटीपी या एचटीटीपीएस के जरिए स्थानीय रिपॉजिटरी या रिमोट रिपॉजिटरी का उपयोग कर सकते हैं।

स्थानीय रिपोजिटरी रूपांतरण का उदाहरण।

  1. एचजी-गिट स्थापित करें।

    • विंडोज पर, TortoiseHg Hg-Git के साथ आता है, हालांकि आपको इसे सेटिंग टूल (एक्सटेंशन सेक्शन में) के माध्यम से सक्षम करने की आवश्यकता है

      कछुआ सेटिंग्स

      या मैन्युअल में ~/mercurial.ini

      [extensions]
      hggit =
      
  2. रिपॉजिटरी में बदलने के लिए निम्नलिखित कमांड्स का उपयोग करें:

    $ mkdir git-repo; cd git-repo; git init; cd ..
    $ cd hg-repo
    $ hg bookmarks hg
    $ hg push ../git-repo
    

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

$ cd git-repo
$ git checkout -b master hg

मैंने git-hg को काफी छोटी-मोटी पाया है, लेकिन यह एक आकर्षण की तरह काम करता है, और इसके लिए किसी भी अतिरिक्त डाउनलोड की आवश्यकता नहीं होती है जो अच्छा है।
टिम्मम

2
मुझे एक फ़ोल्डर चाहिए था, न कि पूरा रेपो।
सिमोन कार्लेटी

github के पास अब एक उपकरण है जो सीधे github से इसका समर्थन करता है, देखें stackoverflow.com/questions/16037787/…
टॉमी

@SimoneCarletti इस प्रश्न पर एक नज़र डालें । यह आपको अस्थायी रिपॉजिटरी में फ़ाइल / फ़ोल्डर और उसके इतिहास को निर्यात करने में मदद करेगा। फिर आप अस्थायी मर्क्यूरियल रिपॉजिटरी को गिट में बदलने के लिए दिए गए किसी भी समाधान का उपयोग कर सकते हैं।
naXa

13

आप (मर्क्यूरियल की ओर से):

  • विकल्प के साथ कन्वर्ट एक्सटेंशन का उपयोग --filemapकरने से मूल रेपो के हिस्से को केवल आवश्यक फाइलों के साथ छोटे में बदल दिया जाता है
  • hg-git एक्सटेंशन के साथ Git में रेपो छीन लिया गया

या (hg-git के बजाय), Git में Mercurial ब्रिज का उपयोग करते हुए , क्लोन | Gos से रिपॉजिटरी को खींचें।


11

Gitify

रूपांतरण को पूरा करने के लिए वैकल्पिक का उपयोग करने के लिए एक अधिक आधुनिक और आसान लगता है https://github.com/buchuki/gitifyhg

pip install gitifyhg
git clone gitifyhg::<hgrepoaddress>
# done, you have a git repo with the entire history of the hg one

1
मैं एक पूरे रेपो को परिवर्तित नहीं करना चाहता था, सिर्फ एक फ़ोल्डर।
सिमोन कार्लेटी

1
बहुत बढ़िया! यूनिकोड त्रुटि से सावधान रहें हालांकि github.com/buchuki/gitifyhg/pull/98
आंद्रेई

3
नोट - gitifyhg वर्तमान में नवीनतम मर्क्यूरियल संस्करणों के साथ बुरी तरह से पुराना है।
ज़ोरान पावलोविक

4

Windows 10 पर Git के लिए एक Mercurial रिपॉजिटरी में कनवर्ट करें

यदि एन्कोडिंग के साथ कोई समस्या नहीं है - TortoiseHG Hg-Git एक्सटेंशन का उपयोग करें

md new-repo && cd new-repo
git init --bare .git
cd ..\old-mercurial-repo
hg bookmark -r default master
hg push ..\new-repo
cd ..\new-repo
git config --bool core.bare false

अगर एन्कोडिंग में कुछ गड़बड़ है - तेजी से निर्यात का उपयोग करें

बैश स्थापित करें

व्यवस्थापक के रूप में PowerShell खोलें और चलाएँ:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

से Ubuntu 16.04 LTS स्थापित करें Microsoft स्टोर

बैश खोलकर चला

व्यापारी स्थापित करें

sudo -s
apt-get update
apt install mercurial

तेजी से निर्यात करें v180317 (180317 के बाद सही समय पर काम नहीं करता है)

cd /mnt/c/path_to_work_folder
git clone https://github.com/frej/fast-export.git
cd fast-export
git checkout tags/v180317
cd ..

रिपॉजिटरी में परिवर्तित करें

git init new-repo && cd new-repo
git config core.ignoreCase false && git config core.quotepath off
../fast-export/hg-fast-export.sh -r ../path_to_mercurial_repo/ --fe cp1251
git checkout master

एन्कोडिंग विकल्प:

  • -f एन्कोडिंग, जैसे -f cp1251
  • --fe फ़ाइल नाम एन्कोडिंग जैसे --fe cp1251

3

Hg-Git-तेजी से आयात

https://github.com/kilork/hg-git-fast-import

निम्नलिखित सुविधाओं के साथ एक और उपयोगिता:

  1. Git रिपॉजिटरी में एकल और कई मर्क्यूरियल रिपॉजिटरी का आयात।
  2. पहले से आयातित मर्क्यूरियल रिपॉजिटरी से जीआईटी रिपॉजिटरी में नए संशोधनों का आयात।
  3. टैग।
  4. बंद शाखाएं।
  5. अंतर के साथ अंतिम परिणाम का सत्यापन।

आप आप के लिए द्विआधारी डाउनलोड कर सकते हैं मंच और रास्ते में कहीं रख सकते हैं या के साथ स्थापित cargo(आवश्यकता rustहोने के लिए स्थापित ):

cargo install hg-git-fast-import

फिर उपयोग इस प्रकार है:

hg-git-fast-import single /path/to/source_hg /path/to/target_git

इसकी आवश्यकता नहीं है Pythonऔर Mercurialइसे स्थापित किया जाना है। उन्नत कॉन्फ़िगरेशन लेखकों या शाखाओं को बदलने की अनुमति देता है, शाखाओं को उपसर्ग और अधिक बनाता है।


2

यदि आप github.com का उपयोग कर रहे हैं , तो उन्हें एक आयात सुविधा दिखाई देती है जो आपको अपने hg प्रोजेक्ट के URL में टाइप करने देती है।

पहले एक नया रिपॉजिटरी बनाएं और फिर नए रिपॉजिटरी के लैंडिंग पेज पर नीचे स्क्रॉल करें और "आयात कोड" बटन पर क्लिक करें

आयात कोड बटन के लिए संदर्भ

फिर अपने पिछले रिपॉजिटरी का URL टाइप करें और "इम्पोर्ट इम्पोर्ट" को हिट करें।

"स्टार्ट इम्पोर्ट" बटन के लिए संदर्भ

फिर GitHub बाकी की देखभाल करता है!

गिथब आपके लिए व्यवसाय की देखभाल कर रहा है

ध्यान दें कि GitHub आपको पुरानी रिपॉजिटरी के लिए आपकी साख के लिए पूछेगा यदि यह उनकी आवश्यकता है।

ऊह! मुझे आधिकारिक गाइड मिला


0

विंडोज पर थोड़ा मुश्किल हो सकता है। मर्क्यूरियल ( hggit) में सही प्लगइन्स को सक्षम करने के बाद , TortoiseHG का भी उपयोग किया जा सकता है।

  1. क्लोन मर्क्यूरियल रेपो
  2. क्लोन गिट रेपो
  3. कंसोल सक्षम करें: कंसोल को सक्षम करना
  4. कंसोल का उपयोग करना:

    % hg bookmarks hg

    % hg push <relative path to>/<git-repo>


0

हो सकता है कि यह आज किसी की मदद करे (जब इतिहास को बनाए रखते हुए, पारा भंडार को परिवर्तित करने के लिए)। मर्क्यूरियल 4.0.1 के साथ काम करने के लिए परीक्षण किया गया।

~$ git clone https://*old_hg_repo*
~$ git clone https://github.com/frej/fast-export.git
~$ cd fast-export
~$ git checkout tags/v180317
~$ cd ..
~$ mkdir new_git_repo
~$ cd new_git_repo
~$ git init
~$ .../fast-export/hg-fast-export.sh -r ../old_hg_repo/ --force
~$ git checkout HEAD

और अंत में अपने नए परिवर्तित स्थानीय रेपो को धकेलने के लिए।

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