2010-06-29 8 views
7

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

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

उत्तर

1

जहाँ तक मुझे पता है, Mercurial में किसी भी बदलाव को विभाजित करने के लिए उपकरण नहीं हैं। यदि आप भाग्यशाली हैं, तो आप जो भी परिवर्तन चाहते हैं वे अलग-अलग परिवर्तनों में हैं और फिर आप TransplantExtension का उपयोग कर सकते हैं। मुझे लगता है कि इसकी तुलना गिट के चेरी-पिक से की जा सकती है, लेकिन मैंने बहुत ज्यादा इस्तेमाल किया है।

आप एक नई फ़ाइल में किसी निश्चित फ़ाइल में परिवर्तन मैन्युअल रूप से करने के लिए एचजी diff का भी उपयोग कर सकते हैं। अपनी संपूर्ण स्रोत शाखा को चिह्नित करने के लिए संशोधित श्रेणी का उपयोग करें:

hg diff myfile -r startrevision:endrevision 

आउटपुट को पैच के रूप में माना जा सकता है। अपनी इच्छित प्रत्येक फ़ाइल के लिए ऐसा करें और उन्हें प्रतिबद्ध करें और फिर विलय करें। विनाशकारी परिवर्तन छोड़ना। आप निश्चित रूप से, एक विनाशकारी परिवर्तन के कई बार ऐसा कर सकते हैं एक संशोधन सीमा के बीच में है।

यह कहकर कि जो आप करने की कोशिश कर रहे हैं वह कुछ Mercurial के लिए बनाया गया था। वह कट्टर इतिहास संपादन अधिक गिट का क्षेत्र है (ध्यान दें कि यह सिर्फ मेरी राय है)। अलग-अलग परिवर्तनों में अपने स्थिर परिवर्तन और विनाशकारी परिवर्तन रखें (और शायद अलग शाखाओं में भी)। मैं transplant, rebase और strip का उपयोग परिवर्तनों को स्थानांतरित करने के लिए करता हूं। जब यह सब किया, वे विलय कर रहे हैं और ठीक से धक्का दिया।

ओह, और MercurialQueues देखें। मैंने इसे स्वयं इस्तेमाल किया लेकिन मैंने देखा कि यह कुछ पागल सामान करता है। हो सकता है कि आप जो चाहते हैं उसके साथ कुछ करने में सक्षम हो।

+0

कर सकते हैं कोई बकाया परिवर्तन कर दिया है मैं उपयोग करता हूं: एचजी रिबेस - कोलेप्स --keepbranches -b -d ऐसा लगता है कि उन्हें बिना काम किए मेरे कामकाजी डीआईआर में बदली गई फाइलें डाल दी गई हैं। क्या कोई भी दुष्प्रभाव हैं? – Rygu

+0

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

+0

Mercurial में परिवर्तनों को विभाजित करने के लिए एक एक्सटेंशन है - इसे हिस्टिट कहा जाता है। एक बदलाव संपादित करते समय आप बस प्रतिबद्ध करते हैं। – Jack

4

मुझे लगता है कि mercurialqueues वह है जो आप चाहते हैं। mq के साथ आप किसी भी परिवर्तन को पैच में और किसी भी पैच को एक चेंज में बदल सकते हैं। इसलिए एक पैच को उस पैच से हटाकर एक पैच में परिवर्तित करना जो आप नहीं चाहते हैं और फिर उसे जो भी शाखा चाहते हैं उसे लागू कर रहे हैं। यह काफी complex ऑपरेशन है हालांकि आपके हिस्से पर निश्चित मात्रा में अनुशासन की आवश्यकता है। तो मैं उस कोड पर कोशिश करने से पहले टेस्ट रेपो पर अपने वर्कफ़्लो को कम करने का प्रयास करूंगा जिस पर आप परवाह करते हैं।

+0

लिंक के लिए धन्यवाद, मैं उन्हें देखता हूँ। अभी के लिए मुझे जवाब मिल गया है (ऊपर टिप्पणी देखें)। – Rygu

+0

यह अच्छा है। मैं मूल रूप से mq सामान के संबंध में मिजिपोजर के उत्तर में कुछ विश्वसनीयता देने की कोशिश कर रहा था। –

3

आप फ़ाइल की सामग्री को पकड़ने के लिए hg cat का उपयोग कर सकते हैं क्योंकि यह किसी विशेष शाखा पर मौजूद है, और इसके साथ कार्यशील प्रति संस्करण को प्रतिस्थापित करें।

यह तकनीकी रूप से किसी मर्ज नहीं है, लेकिन जब से तुम पूरे फ़ाइलों से बदल रहे हैं आप बाद में एक बुरा समय विलय चीजों की बहुत ज्यादा नहीं होना चाहिए:,

उदाहरण के लिए

myfile.c प्रपत्र शाखा somefeature हड़पने के लिए, और काम कर प्रतिलिपि संस्करण का स्थान ले, कार्य करें:

hg cat path/to/myfile.c -r somefeature > path/to/myfile.c 

कि टिप्पणी यह पूरी तरह से काम कर रहे प्रतिलिपि फ़ाइल बदल देता है तो सुनिश्चित करें कि आप पहले

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