मैं Mercurial में अपनी कार्यशील निर्देशिका से सभी अनट्रैक की गई फ़ाइलों को कैसे हटाऊं?


207

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

मैं विंडोज़ पर हूँ, हालाँकि मैं पॉवरशेल का उपयोग कर रहा हूँ, इसलिए यहाँ एक संयुक्त समाधान भी संभव है।

जवाबों:


286

पर्ज नामक मर्क्यूरियल एक्सटेंशन जोड़ें । यह मर्क्यूरियल द्वारा वितरित किया जाता है।

यह एक्सटेंशन "hg" कमांड को "hg" में जोड़ता है जो मर्क्यूरियल को ज्ञात फ़ाइलों को नहीं हटाता है। यानी अनट्रैक फाइल्स। तो आपकी आज्ञा होगी,

hg purge

यह डिफ़ॉल्ट रूप से सक्षम नहीं है, हो सकता है कि गलती से उन फ़ाइलों को हटाने से बचें जिन्हें आप जोड़ना भूल गए थे।

इस एक्सटेंशन को इंस्टॉल करने के लिए, इसे अपनी मर्क्यूरियल सेटिंग फ़ाइल में जोड़ें (.hgrc on Unix, Mercurial.ini on Windows)

[extensions]
purge = 

इस एक्सटेंशन को अस्थायी रूप से सक्षम करने के लिए आप इसका उपयोग कर सकते हैं

hg purge --config extensions.purge= 

26
hg purge --allसभी अन-ट्रैक की गई और उपेक्षित फ़ाइलों को हटा देगा। यह सोर्स-इन बिल्ड
tacaswell

22
अस्थाई रूप से hg purge --config extensions.purge=
एक्सट्रा

121

बिना पर्ज के उचित तरीका है:

hg st -un0 | xargs -0 rm

1
@simplyharsh इस तरह से बेहतर है या क्या आपको एक्सटेंशन जोड़ने की तुलना में यह कम काम लगा?
याकोव कुपर्मन

3
@YaakovKuperman मुझे लगता है कि एक्सटेंशन जोड़ना इस कमांड (एक बार सक्षम करने) की तुलना में कम काम है। मैं पर्ज एक्सटेंशन को सक्षम नहीं करता क्योंकि मुझे एक पखवाड़े में एक बार से भी कम समय की आवश्यकता होती है। मुझे मूर्खतापूर्ण रूप से भी पुकारें, लेकिन इस आदेश को टाइप करने से मुझे 'शुद्ध' के रूप में निरंकुश होने से पहले फिर से सोचने का पर्याप्त समय मिल जाता है।
साभार १sh

2
@simplyharsh, यह समझ में आता है, लेकिन दो कारण हैं जो मैं सभी के लिए शुद्ध करने के लिए जाऊंगा। सबसे पहले, आप hg purge --print कर सकते हैं और एक सूची देख सकते हैं कि इससे पहले कि आप पर्स निकालते हैं, क्या होने वाला है। दूसरा, यदि आप इसे इस तरह से करते हैं तो आपको काम करने के लिए रेपो की जड़ में होना चाहिए।
याकोव कुपरमैन

1
@ जजवॉगर: यह एक अच्छा है जिसने मुझे पुनर्विचार किया कि hg कैसे काम करता है। हालाँकि, यह केवल इसलिए काम करता है क्योंकि इसमें rm -rf *डॉट फाइलें और डॉट डायरेक्टरी शामिल हैं .hg/। इसी टोकन के द्वारा, कोई भी अन्य डॉटफाइल (कहते हैं। ईविल-सेटिंग्स) भी जीवित रहेगा और पर्स बेहतर है।
दिरकजोत

2
ध्यान रखें कि 'hg st -u' और 'hg purge' के बीच व्यवहार में अंतर होता है। 'hg st -u' उन्हें खाली निर्देशिका नहीं मिलेगी, जबकि 'hg purge' उन्हें ढूंढेंगे (और निकालेंगे)। यह आपके लिए महत्वपूर्ण हो सकता है या नहीं।
माइकल केंट

19

धन्यवाद! इसने मेरे लिए पॉवर्सशेल में भी काम किया:

hg st -un | rm

2
xargs शालीनता से काम नहीं करता है - यह एकमात्र उत्तर है जो बॉक्स से बाहर है "विंडोज़ के अनुकूल"
निकोस अथानासीउ

सहमत ...
शक्तिमान

मेरे लिए काम किया :)
नवीन कुमार V

4
rm $(hg st -u)

... जहां -यू का अर्थ "अनट्रैकेड" है, आप दूसरे राज्य को भी चुन सकते हैं।


4

आप उपयोग कर सकते हैं

hg purge --all

सभी अनदेखा और अनट्रैक फ़ाइलों को हटाने के लिए

(पहले आपको कुछ उत्तरों में बताए गए शुद्ध विस्तार को स्थापित करना होगा)




2

यदि आप पर्स का उपयोग नहीं करना चाहते हैं:

rm $(hg st | grep ^? | awk '{print $2}')

0

यह मानते हुए कि आप एक * nix प्रणाली का उपयोग कर रहे हैं आप कुछ इस तरह से चला सकते हैं:

rm `hg st | awk '/\?/ {print $2}'`

भाड़े के भंडार की जड़ से।

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

कृपया इस आदेश का सावधानी से उपयोग करें क्योंकि यह पूरी तरह से परीक्षण नहीं किया गया था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.