2012-12-07 15 views
6

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

उत्तर

1

मैं निश्चय के साथ यह नहीं कह सकता, लेकिन मेरा अनुमान है कि यह "में grandfathered" रहा है। hg stripmq जो कम से कम तीन साल से चरणों के अलावा पहले का है के भाग के रूप में बाहर शुरू कर दिया।

संभावना बेहतर शब्दों होगा:

* माना * एक इतिहास-पुनर्लेखन आपरेशन नहीं है और जनता के चरण

में changesets पर इस्तेमाल किया जा सकता जब चरणों की एक बड़ी राशि शामिल नहीं किया गया किसी के मौजूदा वर्कफ़्लो को तोड़ने के लिए देखभाल नहीं की गई थी। मसौदा चरण में बाहर शुरू करने और सार्वजनिक एक बार धक्का दिया बन करता है। किसी भी चरण-जागरूक आदेशों को पता है कि प्रतिबद्धता चरण को धक्का देने के बाद सार्वजनिक है और संशोधन की अनुमति न देने के लिए (जब तक पुश एक गैर-प्रकाशन भंडार के लिए नहीं था ...)।

हालांकि, लोग पहले से ही strip का उपयोग कर रहे थे और स्क्रिप्ट में धक्का दिए गए परिवर्तनों को हटाने के लिए स्क्रिप्ट में थे, और यदि strip ने अपग्रेड के बाद अचानक कहा था, "अरे, आप इसे सार्वजनिक नहीं कर सकते!" तो उन लोगों को उनके पिछड़े-संगतता वादे को तोड़ दिया होता।

के चरण धीरे-धीरे एक बहुत अद्भुत evolve प्रणाली है कि लगभग सभी मामलों के लिए MQ की तुलना में काफी बेहतर विकल्प हो जाएगा में बढ़ रहा है, लेकिन मैं अभी भी शक है कि हम कभी मिल जाएगा मैट MQ और पट्टी को हटाने के लिए - वह अभी भी बनाए रखने पर जोर एक पायथन 2.4 संगत कोडबेस और वह 9 साल का है!

टीएल; डॉ: भले ही strip हमेशा एक अक्षम एक्सटेंशन था, बहुत से लोग इसे अपने व्यवहार को बदलने/चरणों के आगमन को बदलने के लिए उपयोग करते हैं।

+0

धन्यवाद Ry4an द्वारा this post बताया। मैं सुधार और स्पष्टीकरण की सराहना करता हूं। –

+1

क्या इसका मतलब यह है कि 'स्ट्रिप' चेंजसेट _remove_ नहीं करता है, लेकिन सिर्फ _hides_? मैं प्रकाशन से पहले विकास से 100% _remove_ मामूली काम करने के लिए एक रास्ता तलाश रहा था।यह सुरक्षित और एक बहुत ही महत्वपूर्ण विशेषता है, क्योंकि एक डेवलपर के रूप में आपको स्थानीय काम करना चाहिए (यह एक डीवीसीएस के फायदे में से एक है, है ना?), और मास्टर में "एक प्रतिबद्ध प्रति फीचर" परिवर्तन को मर्ज करें शाखा (इस प्रकार सभी मास्टर शाखाएं दिखती हैं, उदाहरण के लिए पाइथन, स्फिंक्स ect।)। क्या कोई तरीका है कि मैं "चरण" का उपयोग कर Mercurial के साथ स्पष्ट तरीके से प्राप्त कर सकता हूं? – Iodnas

+0

स्ट्रिप ** ** उन्हें हटा देता है। मेरा मुद्दा यह था कि यह चरण प्रणाली की सीमाओं के बाहर इतना करता है क्योंकि यह 3 साल तक इसकी भविष्यवाणी करता है। –

7

प्रमुख मुद्दा यह है कि अगर आप एक सार्वजनिक changeset पट्टी, और फिर कहीं से इसे फिर से खींच, आप किसी भी मुद्दे की वजह से नहीं किया है। आप बस मूल परिवर्तन वापस प्राप्त करें।

यदि आप (उदाहरण के लिए) दो सार्वजनिक परिवर्तनों को एक साथ पतन करते हैं, और फिर मूल को कहीं से खींचते हैं, तो अब आपके पास दो शाखाएं हैं। एक मूल दो परिवर्तनों के साथ, और एक संक्षिप्त परिवर्तन के साथ, लेकिन दोनों में एक ही बदलाव है। उस समय नरक टूट जाता है और बच्चे खाने वाले राक्षस पृथ्वी पर घूमते हैं।

इसलिए 'इतिहास पुनः लिखना' इतिहास इतिहास अलग नहीं है।


davidmc24 मैट मैकाल (मर्क्युरियल के पिता), जिसमें वे कहते हैं मूल रूप से एक ही बात

+0

मुझे राक्षस खाने वाले बच्चे से प्यार है। –

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