2010-08-24 21 views
13

मैं समझता हूं कि इतिहास से remove an entire changeset कैसे है लेकिन यह स्पष्ट नहीं है कि इसके बजाय सबसेट को कैसे हटाया जाए।Mercurial: सभी परिवर्तनों से फ़ाइल निकालें

उदाहरण के लिए, स्रोत कोड को अकेले छोड़ते समय मैं सभी मौजूदा डीएलएल फ़ाइलों को मौजूदा परिवर्तन से कैसे हटा सकता हूं?

+0

क्या डीएलएल केवल हालिया परिवर्तन या पहले के बदलाव (या परिवर्तन) में मौजूद हैं? –

+0

डीएलएल पहले के परिवर्तन में मौजूद हैं – Gili

उत्तर

17

क्योंकि संशोधन आईडी (उदा। A8d7641f ...) परिवर्तन के हैश पर आधारित हैं, इसलिए इतिहास से किसी बदलाव के उप-समूह को वास्तव में संभव नहीं है।

हालांकि, Convert एक्सटेंशन का उपयोग करके फ़ाइलों के एक निश्चित सेट को छोड़कर समानांतर इतिहास के साथ एक नया रेपो बनाना संभव है। exclude एस जोड़कर आप उन फ़ाइलों को बाहर करने के लिए फ़ाइलमैप का उपयोग करके एक Mercurial repo में Mercurial repo को परिवर्तित कर देंगे। यह एक नया, असंबंधित भंडार बनाएगा, जिसका अर्थ है कि किसी भी क्लोन लोग अब इसे खींचने में सक्षम नहीं होंगे, और इस नए रेपो से फिर से क्लोन करना होगा।

+0

क्या कोई दूसरा रास्ता नहीं है? आइए आप 100 व्यक्तियों की टीम पर कहें। कोई गलती से कॉपीराइट सामग्री में जांच करता है या हो सकता है कि वे परीक्षण के हिस्से के रूप में गलती से कुछ उपयोगकर्ता डेटा में जांच करें। सभी देवताओं को पुनः क्लोन करने के लिए पूछना एक जैसा लगता है गैर स्टार्टर लेकिन आपको डेटा से छुटकारा पाने की ज़रूरत है। क्या कोई अन्य विकल्प नहीं है? – gman

+1

नहीं। बड़ी टीम के साथ, कोई उम्मीद करेगा कि किसी प्रकार की समीक्षा प्रक्रिया शामिल होगी। – Ringding

13
  1. सुनिश्चित करें कि आपके सभी साथियों (यदि हो तो)
  2. बैकअप अपने भंडार
  3. केंद्रीय रेपो के लिए अपने स्थानीय परिवर्तन धकेल दिया बनाओ निम्नलिखित सामग्री के साथ एक "map.txt" फ़ाइल बनाएँ:
    # this filemap is used to exclude specific files 
    exclude "subdir/filename1.ext" 
    exclude "subdir/filename2.ext" 
    exclude "subdir2"
  4. इस कमांड को चलाएं:
    hg convert --filemap map.txt c:/oldrepo c:/newrepo
    नोट: आपको पथों पर भी "फॉरवर्ड-स्लैश" का उपयोग करना होगा, यहां तक ​​कि विंडोज़ पर भी।
  5. प्रतीक्षा और धैर्य रखें
  6. अब आप c:\newrepo पर लेकिन फ़ाइलों

पी एस के बिना एक नया रेपो की है। "ऊपरी" रेपो में आपको सभी परिवर्तन और को फिर से पुश करना होगा अपने नए रेपो को फिर से दबाएं।

पीपीएस। मैंने वास्तव में blog post लिखा है जिसमें अधिक जानकारी है (बिटबकेट आदि में परिवर्तनों को अलग करने सहित

+2

जैसा कि नए टीम के सदस्य जोड़े गए हैं, मैं संदिग्ध हम सभी नोब काम करता है रेपो दुबला रखने के लिए साल में एक बार ऐसा करेंगे। –

+0

मेरे कोफाउंडर ने पूरी तरह से फोनगैप लाइब्रेरी को रेपो (18 मेगाबाइट्स) में गलती से किया है, इसलिए मुझे इसे कठिन तरीके से सीखना था, हे – Alex

+0

कुछ प्रकार की सभी फाइलों को छोड़कर क्या? मैंने सभी कामों से सभी बैकअप फ़ाइलों को बाहर करने के लिए * .bak "को बाहर करने की कोशिश की (मैं उन्हें .hgignore में शामिल करना भूल गया), काम नहीं किया। –

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