2010-08-12 17 views
8

मैं यह पता लगाने की क्यों मर्क्युरियल मैं इस स्थिति में एक नई दूरस्थ शाखा बनाने के लिए कोशिश कर रहा हूँ सोचता है कि कोशिश कर रहा हूँ:मर्क्युरियल धक्का बंद कर दिया शाखाओं

alt text http://a.yfrog.com/img716/8421/9vz.png

है यह सिर्फ मुझे उस शाखा को सूचित करने की कोशिश कर रहा मेटा-डेटा में एक बंद शाखा के रूप में दिखाई देगा?

मैं मर्क्युरियल v1.6.1023

संपादित पर हूँ: दूरस्थ भंडार पर केवल शाखा का नाम है "डिफ़ॉल्ट"

उत्तर

5

डिफ़ॉल्ट रूप से hg push आपके स्थानीय भंडार में सभी परिवर्तनों को धक्का दे रहा है जो रिमोट रिपोजिटरी में नहीं हैं। यदि आपके पास स्थानीय शाखा (Environment_Switching आपके मामले में कुछ बदलाव हैं) - यहां तक ​​कि एक बंद शाखा - वे भी पर जाएंगे, आप उन्हें hg push -b default का उपयोग करके स्पष्ट रूप से बहिष्कृत करते हैं (मान लीजिए कि आपने उस शाखा को default पर वापस नहीं मिला है) ।

अपने प्रश्न का उत्तर देने के लिए, यह केवल एक चेतावनी है कि आप एक नई रिमोट शाखा बना रहे हैं।

संपादित करें: hg push -r default और hg push -b default समकक्ष हैं। आउटपुट से hg help revs:

Mercurial व्यक्तिगत संशोधन निर्दिष्ट करने के कई तरीकों का समर्थन करता है। ... ब्रेवटी के लिए पाठ हटा दिया गया ... एक शाखा का नाम उस शाखा के सबसे हालिया संशोधन को दर्शाता है।

एक शाखा के tipmost संशोधन धक्का भी अपने पूर्वजों, जो शाखा पर changesets के बाकी हैं धक्का होगा।

+0

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

+0

ऐसा लगता है जैसे आपने 'Environment_Switching' शाखा को पहले से ही डिफ़ॉल्ट रूप से विलय कर दिया है। उस स्थिति में, आपको या तो (ए) उस शाखा को रिमोट रिपोजिटरी में धक्का देना होगा ('- new-branch' विकल्प 'hg push'' का उपयोग करें, या (बी)' hg के संयोजन का उपयोग करें क्लोन', 'एचजी निर्यात' और 'एचजी आयात' परिवर्तन के बिना स्थानीय भंडार बनाने के लिए, फिर वहां से दबाएं, या (सी) ट्रांसप्लेंट एक्सटेंशन के साथ कुछ चालबाजी करें ताकि परिवर्तन को धक्का देने से पहले 'डिफ़ॉल्ट' पर स्थानांतरित किया जा सके। –

0

संपादित करें: गलत समझा सवाल। निम्नलिखित है कि आप एक शाखा में कई सिर कैसे प्राप्त करते हैं।


यदि आपके पास रिमोट से अलग आधार है तो आम तौर पर एक नया सिर बनाया जाता है।
मैं निम्नलिखित कार्यप्रवाह में इस देखा है:
R1 उपयोगकर्ता A करता है और धक्का
R1 उपयोगकर्ता B
R2 उपयोगकर्ता A करता खींचती है और धक्का
आर? उपयोगकर्ता बी

Mercurial निर्णय लेगा कि उपयोगकर्ता बी का धक्का R1 पर आधारित है, जबकि सर्वर R2 पर है, इसलिए यह केवल एक अलग शाखा पर उपयोगकर्ता बी के परिवर्तन स्वीकार करेगा।
इसे रोकने के लिए, स्थानीय रूप से उपयोगकर्ता बी के परिवर्तनों को प्रतिबद्ध करें, फिर hg pull करें, उसके बाद hg merge और दूरस्थ परिवर्तनों के साथ अपने परिवर्तनों को मर्ज करें। आप अपने परिवर्तन दूरस्थ सर्वर पर धक्का दे सकते हैं।

+1

जो आप वर्णन करते हैं वह एक शाखा पर अलग-अलग सिर हैं। – Rudi

0

हां, जब भी आप hg push करते हैं तो आपकी बंद शाखाओं को भी धक्का दिया जाता है। यदि आप केवल डिफ़ॉल्ट को धक्का देना चाहते हैं तो आप hg push -r default कर सकते हैं कि तब आपको वह संदेश दिखाई नहीं देगा।

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