2009-05-18 4 views
15

मैं मरकुरियल में एक ही हंक को कैसे वापस कर सकता हूं, जैसा कि यह डार्क्स में किया गया है, यानी यह मुझे प्रत्येक हंक के लिए पूछता है और फ़ाइल करता है कि मैं इसे वापस करना चाहता हूं या नहीं? क्या यह TortoiseHg का उपयोग कर संभव है?Mercurial: एक सिंगल हंक को वापस करें

धन्यवाद

+0

शायद आपको यह निर्दिष्ट करना चाहिए कि एक हंक क्या है। मुझे एचजी के साथ ज्यादा अनुभव नहीं है, लेकिन जब मैंने इसे पढ़ा है, तो मैंने इस नाम को दस्तावेज़ में नहीं देखा है, और विकी में 'हंक' खोज 0 परिणाम देता है ... – PhiLho

+2

"हंक" से मेरा मतलब है "स्निपेट बदलें ", यानी" diff "का एक हिस्सा। TortoiseHg इस शब्दावली का उपयोग करता है और इसलिए डार्क्स करता है। –

+0

आप TortoiseHg विकल्पों में एक बाहरी diff टूल (उदाहरण के लिए: TortoiseGitMerge) सेट अप कर सकते हैं, और TortoiseHg में अपनी फ़ाइल पर दिखाई देने वाले राइट-क्लिक मेनू में "डिफ टू पैरेंट" चुनकर इसे लॉन्च कर सकते हैं। Diff उपकरण से, शिकारियों को अलग से पहचानना और वापस करना आसान है। – wil

उत्तर

4

record extensiondarcs record से प्रेरित है। यह आपको को अगले प्रतिबद्धता के लिए केवल विशिष्ट शिकारी जोड़ने की अनुमति देगा, यानी, जो आप चाहते हैं उसके विपरीत। लेकिन आप जिस चीज को वापस करना चाहते हैं उसे छोड़कर आप सभी शिकारी जोड़ सकते हैं और फिर इसे वापस करने के लिए hg revert करें। एक छोटी सी पीछे की ओर, मुझे पता है ... :-)

तुम भी hg diff > patch; hg revert कर सकता है, संपादित हंक नष्ट करने के लिए patch और hg import --no-commit कर पैच reappy करने के लिए। यह संभवतः तेज़ है, लेकिन आपको पैच को मैन्युअल रूप से संपादित करने की आवश्यकता है। मुझे Emacs diff-mode के साथ बहुत सफलता मिली है, लेकिन जब से आप TortoiseHg के बारे में पूछते हैं तो आप Emacs का उपयोग नहीं करना चाहेंगे।

+0

मैं हर समय Emacs का उपयोग करता हूं, मैं बस इसमें एचजी समर्थन से पूरी तरह परिचित नहीं हूं। मैं इसे देख लूँगा और उम्मीद है कि यह किसी भी अन्य वीसी मोड की तरह है ... सुझाव के लिए धन्यवाद! –

+0

ग्रेट। मैंने केवल Emacs के भीतर से Mercurial का उपयोग किया है: 'C-x v = 'वर्तमान फ़ाइल पर' hg diff' करता है, और 'C-x v v' वर्तमान फ़ाइल पर' hg प्रतिबद्ध' करता है। यह कभी-कभी अच्छा होता है जब मैं एक भंडार पर काम करता हूं जहां मुझे पता है कि सिर्फ एक फ़ाइल में जांच ठीक है। पैच को संपादित करने के लिए, तो यह Mercurial से स्वतंत्र है। यह केवल Emacs 'diff-mode का उपयोग करता है जो जानता है कि जब आप पैच से सामान हटाते हैं तो लाइन नंबर को कैसे अपडेट किया जाए। –

4
एक एकल फाइल कोशिश में एक changeset को पलटने के लिए

:

एचजी diff -c | पैच -आर

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

+1

आपको रिपॉजिटरी के भीतर आपकी वर्तमान कार्यशील निर्देशिका के आधार पर शायद 'पैच-आर-पी 1' या '-पी' के उच्च स्तर को बनाने की आवश्यकता है। –

7

वास्तव में कम से कम शेल्व उपकरण में "भाग" को संदर्भित करता है। जो मुझे उन्हें वापस करने के लिए पसंदीदा तरीके से लाता है (और TortoiseHg की पसंदीदा विशेषताओं)।

बस उन हिस्सों को स्थानांतरित करें जिन्हें आप हटाना चाहते हैं, जिसे आप पूरी तरह से हटाने के इरादे से बनाते हैं। यह वास्तव में तब तक काम करता है जब तक कि भागों की पहचान की जाती है क्योंकि आपको उनकी आवश्यकता होती है। यदि नहीं, तो आपके पास मैन्युअल रूप से कुछ करने के अलावा कोई विकल्प नहीं है।

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

+1

अब, "चयनित भाग हटाएं" नामक एक बटन मौजूद है! मैं इसे शायद ही वहां खोजूंगा, धन्यवाद :) – vines