2011-01-28 12 views
19

क्या कोई Mercurial कमांड है जिसे आप hg pull के बाद उपयोग कर सकते हैं ताकि सभी फ़ाइलों की सूची देखने के लिए मैन्युअल रूप से विलय की आवश्यकता हो (यानी: जिनके पास संघर्ष हो) hg merge करते समय?Mercurial - फ़ाइलों की सूची देखें जिन्हें मैन्युअल रूप से विलय करने की आवश्यकता है?

+0

मुझे पता है कि यह लगभग एक वर्ष रहा है, लेकिन मुझे अभी एहसास हुआ कि मेरा जवाब आपके प्रश्न के लिए बिल्कुल सही नहीं था। मैंने इसे एक ऐसे उत्तर में अपडेट किया है जो संतोषजनक हो सकता है। –

उत्तर

29

hg resolve --list

documentation से: विलय विन्यास की स्थापना, या diff3 की तरह एक कमांड लाइन मर्ज उपकरण:

अनसुलझे संघर्षों के साथ बनाए गए अक्सर आंतरिक का उपयोग कर गैर-सहभागी विलय का परिणाम है। संकल्प कमांड का उपयोग मर्ज में शामिल फ़ाइलों को प्रबंधित करने के लिए किया जाता है, एचजी विलय चलाने के बाद, और एचजी प्रतिबद्ध चलाने से पहले (यानी कार्यशील निर्देशिका में दो माता-पिता होना चाहिए)।

संपादित करें 5 जनवरी 2012:

(। मैं इस सवाल का जवाब आज तो मैं यह दोबारा गौर के लिए एक ऊपर मत प्राप्त मुझे पता चला कि मैं सवाल गलत समझा।)

सवाल यह है कि "मैंने रिमोट रिपोजिटरी से एक पुल किया है और अभी तक ने विलय नहीं किया है। क्या मैं देख सकता हूं कि मर्ज करने के बाद कौन से संघर्ष बनाए जाएंगे?"

मेरा उत्तर स्पष्ट रूप से गलत है। लिंक किए गए दस्तावेज़ों के माध्यम से पढ़ने के बाद, मुझे नहीं लगता कि ऐसा करने के लिए एक अंतर्निहित विधि है। हालांकि, आपके कामकाजी स्रोत पेड़ को बर्बाद किए बिना ऐसा करने का एक तरीका है।

मान लेते हैं कि आप अपने स्थानीय सिस्टम पर बी भंडार करने के लिए कुछ दूरदराज के स्रोत से एक भंडार क्लोन है, यानि कि hg clone http://hg.example.com/A B करते हैं। ऐसा करने के बाद, आप अपने स्थानीय भंडार में परिवर्तन करते हैं, बी, जिसमें कम से कम एक प्रतिबद्धता शामिल है। इस बीच, भंडार में परिवर्तन किए गए हैं ताकि जब आप एक पुल करते हैं तो आपको एक संदेश मिलता है कि नए बदलाव जोड़े गए हैं और सिर बनाए गए हैं।

इस बिंदु पर, आप विलय में शामिल होने वाले दो परिवर्तनों को सूचीबद्ध करने के लिए hg heads कर सकते हैं। इस जानकारी से, आप सिर के बीच अंतर सूचीबद्ध करने के लिए एक स्टेटस कमांड जारी कर सकते हैं। हेड सूची के अनुसार, आपके भंडार बी में संशोधन संख्या मानते हुए, "1" और "2" हैं, तो आप परिवर्तनों की सूची देखने के लिए hg status --rev 1:2 कर सकते हैं।

बेशक, यह वास्तव में आपको नहीं बताता है कि विवाद होने पर संघर्ष कब होगा। चूंकि कोई ऐसा आदेश नहीं है जो आपको यह दिखाएगा, आपको एक नए भंडार में क्लोन करके और विलय करके "विलय" करना होगा। तो, hg clone B C && cd C && hg merge। यदि आप इस विलय के परिणाम से संतुष्ट हैं तो आप hg com -m 'Merging complete' && hg push && cd ../ && rm -rf C कर सकते हैं।

यह एक प्रक्रिया है, लेकिन अगर यह विलय आपदा हो जाता है तो यह आपके वर्तमान स्रोत पेड़ को साफ रखता है। सार्वजनिक रिपॉजिटरीज़ के साथ काम करने के लिए आपको this description भी मिल सकता है।

+0

मेरा पहला जवाब गलत था। –

+3

मैंने इस तरह से प्रश्न को गलत तरीके से पढ़ा है, इसलिए आपका जवाब अभी भी मेरे लिए सही था। – MasterScrat

-1

मुझे लगता है कि hg status वह है जिसे आप ढूंढ रहे हैं।

आप मर्क्युरियल से इस अध्याय को पढ़ने के लिए चाहते हो सकता है: यह निश्चित गाइड

http://hgbook.red-bean.com/read/mercurial-in-daily-use.html

+0

एचजी स्थिति सभी संशोधित फ़ाइलों के लिए "एम" दिखाती है, चाहे संघर्ष में हों या नहीं। हालांकि एचजी संकल्प --सूची वास्तव में काम करता है। –

1

आप संशोधन की एक जोड़ी के साथ एचजी स्टेट की --rev विकल्प का उपयोग कर सकते हैं क्या फ़ाइल को देखने के लिए दोनों के बीच मतभेद मौजूद हैं। एक से थोड़ा वर्बोज़ लेकिन विस्तृत उदाहरण के लिए नीचे देखें:

पहले हम शुरू एक नया भंडार बनाने के द्वारा: अब

[gkeramidas /tmp/foo]$ echo foo > foo.txt 
[gkeramidas /tmp/foo]$ hg commit -Am 'add foo' 
adding foo.txt 
[gkeramidas /tmp/foo]$ hg glog 
@ 0[tip] b7ac7bd864b7 2011-01-30 18:11 -0800 gkeramidas 
    add foo 

:

[gkeramidas /tmp]$ hg init foo 
[gkeramidas /tmp]$ cd foo 

तो एक भी नया भंडार करने के लिए कहा जाता है foo.txt फ़ाइल जोड़ने bar.txt नामक दूसरी फ़ाइल जोड़ें, संशोधन 1:

[gkeramidas /tmp/foo]$ echo bar > bar.txt 
[gkeramidas /tmp/foo]$ hg commit -Am 'add bar' 
adding bar.txt 

पुनरीक्षण 0 पर वापस जाएं, और एक अलग फ़ाइल जोड़ें, एक अलग हेड पर। यह किसी और से एक पुल जो इसके शुरू होने वाले संशोधन पर एक ही भंडार क्लोन था अनुकरण करने के लिए किया जाता है:

[gkeramidas /tmp/foo]$ hg up -C 0 
0 files updated, 0 files merged, 1 files removed, 0 files unresolved 
[gkeramidas /tmp/foo]$ echo koko > koko.txt 
[gkeramidas /tmp/foo]$ hg commit -Am 'add koko' 
adding koko.txt 
created new head 
[gkeramidas /tmp/foo]$ hg glog 
@ 2[tip]:0 e5d80abdcb06 2011-01-30 18:12 -0800 gkeramidas 
| add koko 
| 
| o 1 a2d0d0e66ce4 2011-01-30 18:12 -0800 gkeramidas 
|/  add bar 
| 
o 0 b7ac7bd864b7 2011-01-30 18:11 -0800 gkeramidas 
    add foo 

अब तुम क्या फ़ाइल मतभेद संशोधन के किसी भी जोड़े के बीच मौजूद देखने के लिए एचजी स्टेट उपयोग कर सकते हैं, जैसे रेव 0 से परिवर्तन फिरना करने के लिए 1 फ़ाइल सूची में जोड़ा 'bar.txt':

[gkeramidas /tmp/foo]$ hg stat --rev 0:1 
A bar.txt 

रेव 0 से rev2 में परिवर्तन जोड़ा फ़ाइल सूची में 'koko.txt':

[gkeramidas /tmp/foo]$ hg stat --rev 0:2 
A koko.txt 

लेकिन अधिक दिलचस्प बात यह है कि संशोध 1 से संशोधित 2 में परिवर्तन दो फ़ाइल मेनिफेस्ट परिवर्तन शामिल हैं। (1) 'koko.txt' रेव 2 में जोड़ा गया है, और (2) 'bar.txt' रेव 1 में मौजूद है, लेकिन राजस्व 2 से लापता है, तो यह एक 'हटाया' फ़ाइल के रूप में दिखाता है:

[gkeramidas /tmp/foo]$ hg stat --rev 1:2 
A koko.txt 
R bar.txt 
3

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

ऐसा करने के लिए, मैं :merge3 टूल (जो स्वचालित रूप से विलय करने का प्रयास करता है, लेकिन confl छोड़ देता है) आईसीटीएस अनसुलझा) और फिर hg resolve --list का उपयोग करें - या विवादों को देखने के लिए बस मर्ज कमांड के आउटपुट को देखें।

hg merge <otherbranch> --tool :merge3 
hg resolve -l 

आप वास्तव में अंत में विलय करने के लिए आप hg update -C बाद में चला सकते हैं मर्ज पूर्ववत करने के लिए (यदि आपने अभी क्या संघर्ष होता देखना चाहते हैं) नहीं करना चाहता था, तो।

आप मर्ज खत्म करना चाहते हैं, तो आप प्रत्येक फ़ाइल के लिए hg resolve <filepath> चला सकते हैं, या बस hg resolve --all आप hg commit मर्ज changeset से पहले सभी कि संघर्षों के साथ रहने से निकलने के लिए,।

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