2013-02-20 12 views
16

एक मर्क्यूरियल रेपो में, "डिफ़ॉल्ट" शाखा उस बिंदु तक बहुत पुरानी हो गई है जहां इसे "विकास" में परिवर्तनों में विलय करने का अर्थ नहीं आता है ", एक नामित शाखा जिसमें आवेदन का नवीनतम तैनाती संस्करण है।Mercurial - बंद डिफ़ॉल्ट शाखा और नामित शाखा के साथ प्रतिस्थापित करें डिफ़ॉल्ट रूप से

विलय को डिफ़ॉल्ट रूप से विकसित करने के बजाय, मैं वर्तमान डिफ़ॉल्ट शाखा को कैसे बंद कर सकता हूं और फिर सिर का उपयोग करके एक नई डिफ़ॉल्ट शाखा बना सकता हूं?

मैंने कुछ अन्य प्रश्न और उत्तर देखे हैं जो समान हैं, शायद वही हैं, लेकिन मुझे अभी भी यह समझने में परेशानी हो रही है कि यह कैसे काम करना चाहिए।

धन्यवाद!

+0

वैकल्पिक रूप से, आप 'update' विकसित के साथ लागू हो और' करने के लिए कर सकता है merge' शाखा, लेकिन विलय करने से पहले आप इसे विकसित करने की एक सटीक प्रति बनाते हैं। – Edward

+0

वास्तव में यह काम करेगा, लेकिन मैं यह कैसे कर सकता हूं? – kgx

उत्तर

24

तो defaultdevelop से कुछ हद तक अलग हुए है और आप default चाहते develop मर्ज के बाद ही होना करने के लिए, तुम क्या एडवर्ड आपके द्वारा दिया गया से आदेश (की एक अलग सेट की जरूरत है यह भी काम करेगा जहां develop एक प्रत्यक्ष वंशज default)।

hg update -C default 
hg -y merge --tool internal:fail develop 
hg revert --all --no-backup -r develop 
hg resolve --all --mark 
hg commit -m "merge updating default to current develop" 

इसका मतलब है कि किसी भी विवाद के परिणामस्वरूप एक अनसुलझा विलय होगा। फिर आप सब कुछdevelop शाखा के समान होने के लिए वापस लौटते हैं (बिना बैकअप के, इसलिए आपको बहुत से .orig फ़ाइलों को नहीं मिला है)।

+0

टिम यह पूरी तरह से काम किया। आपकी सहायताके लिए धन्यवाद! आपके उत्तर के साथ-साथ एडवर्ड के दोनों के माध्यम से मैंने बस एचजी के बारे में बहुत कुछ सीखा। – kgx

+0

यह एक बेहतर समाधान है! धन्यवाद! – Edward

+0

भव्य, धन्यवाद –

2

अपनी टिप्पणी के आधार पर यह एक आवश्यकता शाखा बंद करने के लिए नहीं है कि यहाँ चरणों में विकसित शाखा के साथ धुन में डिफ़ॉल्ट शाखा मिलना चाहिए की एक श्रृंखला है:

  1. hg update default
  2. hg merge --tool internal:other - जबकि शाखा का विकास privileging विलय करने के लिए
  3. hg diff -r develop - साथ तुलना विकसित सुनिश्चित करने के लिए आप एक सटीक प्रतिलिपि है
  4. hg commit -m "merge updating default to current develop"

एक बार पूरा होने के बाद, आपके पास एक अद्यतन डिफ़ॉल्ट होना चाहिए जो विकास शाखा को प्रतिबिंबित करता है, जिससे उन्हें वापस सिंक में लाया जाता है।

+0

एडवर्ड उत्तर के लिए धन्यवाद। मैंने आपकी प्रक्रिया का परीक्षण किया और चरण 2 पर निम्नलिखित परिणाम प्राप्त किया: निरस्त: शाखा 'डिफ़ॉल्ट' में एक सिर है - कृपया एक स्पष्ट संशोधन के साथ विलय करें। मेरे रेपो में कई अन्य सक्रिय नामित शाखाओं के कारण 2 सिर अधिक हैं। वैसे भी, इस प्रारंभिक समाधान ने स्पष्ट रूप से गेंद को रोलिंग किया ताकि धन्यवाद।इसके अलावा एचजी diff -r उपयोगी कमांड है जिसे मैंने पहले नहीं देखा है। – kgx

0

मुझे लगता है कि यह कैसे काम करता है यह बताने के लिए टोर्टोइजहग में एक अवधारणा का उपयोग करना बेहतर है।

  • hg update शाखा विकसित करने के लिए
  • डिफ़ॉल्ट शाखा के प्रमुख चुनते हैं, और चुनें स्थानीय
  • के साथ विलय को (अन्य) मर्ज लक्ष्य से सभी परिवर्तनों को छोड़ चुनते हैं, इस प्रकार डिफ़ॉल्ट विकसित प्रभावित किए बिना विकसित में विलय कर दिया गया है
  • तो विकसित के सिर से डिफ़ॉल्ट, hg branch default उपयोग करते हैं, डिफ़ॉल्ट पुनरारंभ फिर
संबंधित मुद्दे