2012-06-26 12 views
6

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

मैं hg-git का उपयोग करके सहज नहीं हूं क्योंकि परियोजना के खिलाफ रिपोर्ट की गई कई बग वर्षों से अनुत्तरित नहीं हुई हैं। मुझे संदेह है कि का उपयोग करने से गिट को एचजी में परिवर्तित करने के लिए hg convert का उपयोग करना सुरक्षित है।

मेरा प्रश्न है: कहें कि मैंने पहले ही संग्रह को Mercurial में परिवर्तित कर दिया है और कुछ बदलाव किए हैं, मैं इन परिवर्तनों को आधिकारिक भंडार में कैसे योगदान दूं? मैं किसी भी इतिहास की जानकारी खोने के बिना आधिकारिक गिट भंडार में अपने परिवर्तनों को वापस योगदान देना चाहता हूं (यानी, मैं एक में कई परिवर्तनों को फोल्ड नहीं करना चाहता)।

ऐसा करने का सबसे आसान और सुरक्षित तरीका क्या है?

+2

एक आधुनिक एसएमएम का उपयोग करने के कई कारण हैं जब एक परियोजना आधिकारिक तौर पर svn या cvs जैसे होस्ट की जाती है, इस प्रकार यह आसान बनाने के लिए उपकरणों की व्यापक उपलब्धता होती है। लेकिन अगर परियोजना पहले से ही एक आधुनिक एसएमएम में होस्ट की गई है तो स्थानीय स्तर पर एक ही एससीएम का उपयोग न करने के लिए बहुत कम कारण है। – bames53

+0

@ bames53, मैं सहमत हूं लेकिन दैनिक आधार पर कई अन्य निर्णयों की तरह, यह पूरी तरह से व्यक्तिपरक है :) – Gili

+1

बस यह सुनिश्चित करने के लिए, आप जानते हैं कि लिंक आधिकारिक एचजी-गिट रेपो नहीं है? यह [यहां] (https://github.com/schacon/hg-git) पाया जा सकता है। Http://hg-git.github.com/ के अनुसार – obmarg

उत्तर

6

आप कोशिश करते हैं और निर्यात अपने मर्क्युरियल पैच के रूप में करता है सकते हैं:

hg export --git -r 1 >patch.diff 

यह .diff फ़ाइल Git द्वारा मान्यता प्राप्त होना चाहिए और git apply साथ Git रेपो के लिए जोड़ा जा सकता है।

(यह "Convert a Mercurial Repository to Git", जहां अधिक अप-टू-डेट script hg-fast-export भी उल्लेख किया गया था में सुझाव दिया गया था) hg export की --git विकल्प सुनिश्चित करें कि आप Git diff प्रारूप बढ़ाया में डिफ उत्पन्न कर देगा। अधिक जानकारी के लिए hg help diffs देखें।

+0

क्या यह एक में कई बदलावों को पतन नहीं करेगा? – Gili

+0

@Gili: यदि ऐसा है, तो आप बस उन सभी एचजी संशोधनों को सूचीबद्ध करेंगे जिन्हें आप रुचि रखते हैं और प्रत्येक के लिए, '.diff' फ़ाइल (जिसे आप अपने गिट रेपो में बदल देंगे) का उत्पादन करेंगे। 'एचजी निर्यात' एक संशोधन या संशोधन की एक श्रृंखला ले सकता है। – VonC

+0

मैंने एक त्वरित परीक्षण चलाया: 'hg export --git -r 1 -r 2> patch.diff' दोनों संशोधनों को एक ही फ़ाइल में एम्बेड करता है लेकिन पर्याप्त जानकारी प्रदान करता है जिसके लिए परिवर्तन में परिवर्तन होता है। मेरा मानना ​​है कि यह काम करेगा। धन्यवाद! – Gili