2010-04-16 18 views
7

मैं सबवर्सन का उपयोग करने वाली एक परियोजना में योगदान करने की कोशिश कर रहा हूं। मैंने रेपो क्लोन करने के लिए Mercurial और इसके hgsubversion एक्सटेंशन का उपयोग किया। मेरा काम एक फीचर शाखा पर होता है।hgsubversion के साथ विलय कैसे संभालें?

मैं डिफ़ॉल्ट शाखा (एचजी बोलने) उर्फ ​​ट्रंक (svn बोल) पर होने वाली सामग्री के साथ सुविधा शाखा को अद्यतित कैसे रखूं?

इसलिए मैंने सुविधा शाखा में अपडेट करने के लिए hg up feature का उपयोग किया, फिर hg pull जिसने मुझे डिफ़ॉल्ट शाखा में परिवर्तन दिए। इसलिए मैंने hg merge default किया, विलय किया, फिर hg push को अपने परिवर्तनों को सबवर्जन में भेजने के लिए प्रयास किया। और Mercurial ने कहा: "क्षमा करें, विलय संशोधन के svn पैरेंट नहीं मिल सकता है।"

उत्तर

1

कुछ अलग शाखाओं में तरीकों के रूप में मर्क्युरियल: http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/

एक आप है 'नामक शाखाओं' का वर्णन कर रहे हैं, जो सबसे लोकप्रिय है जब आप एक रेपो केवल तेज के माध्यम से सुलभ है कि साथ काम कर रहे हैं (या एचजी -git)।

हालांकि, जब आप एचजी-सबवर्जन का उपयोग कर रहे हैं ताकि आप उपversण में परिवर्तनों को दबा रहे हों, जो केवल नाममात्र रूप से शाखाएं हैं, तो आप 'डिफ़ॉल्ट' नामित शाखा में अपने सभी Mercurial परिवर्तनों को रखने से बेहतर हैं , और 'क्लोन और शाखाओं' पैटर्न का उपयोग (जिसे मैं वैसे भी पसंद करता हूं)।

विशेष रूप से, यह संदेश Sorry, can't find svn parent of a merge revision. एक संशोधन का वंशज नहीं है जिसमें उपversण में सीधा मिलान है।

क्या मैं आप थे, मैं svn से पुनः प्राप्त करूंगा, और फिर अपने काम को 'ट्रांसप्लेंट' कमांड (पैक किए गए एक्सटेंशन) के साथ उस रेपो की 'डिफ़ॉल्ट' शाखा में ले जाउंगा। यदि आप समानांतर w/hg-subversion में एकाधिक विशेषताओं का उपयोग अलग-अलग क्लोन (वे बहुत सस्ते हैं) का उपयोग करते हैं, क्योंकि यह शाखाओं के बारे में सोचने के तरीके के साथ अधिक है।

+0

धन्यवाद, रयान। लेकिन आपके सुझाव के साथ, मेरा काम अपस्ट्रीम नहीं दिखाई देगा (यानी सबवर्सन में)। मैं सबवर्जन शाखा को प्रतिबद्ध करने में सक्षम होना चाहता था।दरअसल, मैं सबवर्जन शाखा में प्रतिबद्ध हो सकता हूं, लेकिन मैं मर्कुरियल में ट्रंक से विलय नहीं कर सकता। (और सबवर्सन "केवल नाममात्र" शाखाएं कैसे हैं? ऐसा लगता है कि सबवर्जन में शाखाओं को विलय करने का समर्थन मर्कुरियल की तुलना में कमजोर है, लेकिन यह बहुत भयानक नहीं है। कम से कम मैं ट्रंक से एक शाखा को तोड़ सकता हूं, फिर बार-बार ट्रंक से विलय कर सकता हूं आसानी से और आसानी से। समस्या तब आती है जब मैं शाखा को ट्रंक में फिर से जोड़ना चाहता हूं।) – hibbelig

+0

मुझे अपने सुझाव में अस्पष्ट होना चाहिए, क्योंकि इसमें कुछ भी आपको अपस्ट्रीम को धक्का नहीं देता है। मैं केवल यह सुझाव दे रहा हूं कि एक बार जब आप परिवर्तनों में परिवर्तन प्राप्त कर लेते हैं तो आप खुद को एक ही नामित शाखा में सीमित कर देते हैं, क्योंकि सामान्य शाखाओं के बीच सामान्य विलय और आगे बढ़ने से आप उपversण (जैसे आपने देखा) को दबाएंगे। यदि आप अलग-अलग विकास ट्रैक चाहते हैं, तो एकाधिक क्लोन का उपयोग करके, अपने सभी सीएस को उसी क्लोन पर एक ही नामित शाखा पर रखें, और आपको ठीक होना चाहिए। –

+0

एक बार फिर धन्यवाद, रयान। मैं एकाधिक * सबवर्जन * शाखाओं के साथ कैसे काम करूं? कृपया ध्यान दें कि मैंने सबवर्जन में मौजूद दो शाखाओं का 'एचजी मर्ज' किया था, फिर विलय को सबवर्जन में वापस धक्का देना चाहता था। विलय को धक्का देना उपरोक्त त्रुटि संदेश के साथ विफल रहा। अगर मैंने सबवर्जन पक्ष पर एक ही विलय किया होता, तो विलय Mercurial पक्ष ('hg pull' के बाद) पर बरकरार होता। – hibbelig

0

मैं खुद के लिए यह पता लगाने की जरूरत है और यहाँ यह लिखा है:

http://notebook.3gfp.com/2010/05/pushing-a-new-feature-from-a-mercurial-repo-into-an-svn-repo/

मैं अभी तक पता लगा नहीं किया तोड़फोड़ में एक शाखा को बंद करने और तेज ग्राफ सही लग रही है करने के लिए कैसे।

+0

हाय हार्वे, आप सबवर्जन पक्ष पर विलय कर रहे हैं। मैं Mercurial पक्ष पर विलय करना पसंद करता, लेकिन अगर यह संभव नहीं है, तो यह वही तरीका है, मुझे लगता है। दयालुता, यद्यपि। काई – hibbelig

+1

@hibbelig: हाँ, मैंने इस बारे में hgsubversion लेखकों से पूछा और उन्होंने कहा कि यह एक svn सीमा है क्योंकि मुझे लगता है कि उनके पास दोहरी "माता-पिता" नहीं हैं जैसे एचजी करता है। इस तरह विलय के बारे में एचजी जानता है। – Harvey

5

मुझे अंततः यह पता चला है कि प्रश्न में वर्णित किसी घटना के बाद मेरी रिपॉजिटरी को कैसे प्राप्त किया जाए, ताकि मैं मूल भंडार को फिर से क्लोन किए बिना काम जारी रख सकूं (जो जाहिर है, काफी धीमे ऑपरेशन जब आप सबवर्सन से खींच रहे हैं!)। यदि सबवर्सन की "टिप" आपको आगे बढ़ा नहीं देती है, तो आप यह सुनिश्चित कर लें कि आपके पास $ MerME/.hgrc लाइन के माध्यम से आपके Mercurial में अंतर्निहित अंतर्निहित "रीबेस" एक्सटेंशन है:

[extensions] 
rebase = 

और फिर आप इस आदेश को चलाने के लिए सक्षम है जब आपके भंडार अंकित हो जाता है होना चाहिए:

$ hg rebase --svn 

यदि मैं यह सही ढंग से समझ, यह आपके वर्तमान शाखा है, जो सबवर्सन सिर से आप दूर ले लिया है घुल, और ऊपर यह पुनर्निर्माण Mercurial में शाखा "टिप" जो subversion में सिर के अनुरूप है। वहां से, आप काम कर सकते हैं और सफलतापूर्वक फिर से धक्का देते हैं। यह अब तक मेरे लिए हमेशा काम करता है; अगर आप किसी भी समस्या में भाग लेते हैं तो मुझे बताएं!

+1

मैं इस आदेश का उपयोग कुछ बार समाप्त कर चुका हूं। एसवीएन रिपोज़ के खिलाफ स्थानीय शाखाओं के लिए मेरा काम प्रवाह एचजी पुल, एचजी रीबेस - एसवीएन, एचजी पुश होता है। – MattGWagner

+0

यह कोई जवाब नहीं है :-( – Kugel

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