2010-01-18 20 views
7

मान लें कि मैंने कुछ दूरस्थ प्रयास करने के लिए एक दूरस्थ Mercurial भंडार (स्थानीय नेटवर्क पर या यहां तक ​​कि इंटरनेट पर) क्लोन किया है।
मैं अपने क्लोन में काम करता हूं, कुछ काम करता हूं ... और फिर मुझे एहसास हुआ कि मेरे बदलावों को समझ में नहीं आता है और मुझे फिर से शुरू करना है।संस्करण एक्स (क्लोनिंग के बिना) "Mercurial भंडार" को रीसेट करने का सबसे तेज़ तरीका

तो मैं उसी स्रोत भंडार से फिर से "ताजा" क्लोन रखना चाहता हूं।
असल में, मैं प्रयोग शुरू करने से पहले अपने स्थानीय रेपो को बिंदु पर "रीसेट" करना चाहता हूं।

ऐसा करने का सबसे अच्छा/तेज़ तरीका क्या है?

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

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

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

कोई विचार?
क्या पूरी चीज को फिर से क्लोन करने के अलावा वास्तव में कोई अन्य तरीका नहीं है?
(ध्यान दें: TortoiseHg के साथ एक समाधान अच्छा होगा ... मैं इस कमांड लाइन से अधिक पसंद करते हैं) दूसरे संस्करण के लिए

उत्तर

17

आप हमें hg strip का उपयोग कर समाप्त कर देंगे क्योंकि gizmo सुझाता है, लेकिन ऐसा करने का पारंपरिक तरीका फिर से क्लोन करना होगा - रिमोट रेपो से नहीं, बल्कि अपने स्थानीय रेपो से। उदाहरण के लिए, यदि आप चेकआउट 'भंडार' है और आपको changesets 99 और 100 है कि आप आप ऐसा करेंगे चाहते हैं पसंद नहीं है जोड़ दिया है:

cd .. 
hg clone -r 98 respository repository-scrubbed 
mv repository respository-with-crap-I-do-not-want 
mv repository-scrubbed repository 

कि तात्कालिक के पास होना चाहिए।

1

hg update -r <changeset number> जैसे hg update -r 1। आप hg log का उपयोग कर सकते हैं कि आप कौन सा संस्करण चाहते हैं

+2

वह वास्तव में उसी स्थिति में सिस्टम को तब तक नहीं घुमाएगा जब इसे क्लोन किया गया था - आप अभी भी काम करेंगे जो 'कल' –

8

यदि आप Mq Extension सक्षम करते हैं, तो आप "एचजी स्ट्रिप" कमांड का उपयोग कर सकते हैं जो इतिहास को हटा देगा जो आप अब नहीं चाहते हैं।
अधिक जानकारी Strip command विकी पेज पर उपलब्ध है।

+0

के बाद से बने थे, यह मेरे लिए काम करता था –

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