2009-07-31 10 views
172

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

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

उत्तर

238

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

यह एक्सटेंशन "एचजी" को "purge" कमांड जोड़ता है जो फ़ाइलों को हटा देता है जो Mercurial को ज्ञात नहीं है। यानी अनचाहे फ़ाइलें। तो अपने आदेश होगा,

hg purge 

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

hg status | grep '^\?' | sed 's/^\? //' | xargs rm -rf 
+21

'एचजी purge --all' सभी अन-ट्रैक और अनदेखा फ़ाइलों को हटा देगा।अल्ट अस्थायी रूप से आप '' 'hg purge --config एक्सटेंशन.purge =' ' – tacaswell

+17

का निर्माण करने के लिए उपयोगी है! :) – Pykler

2

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

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

Mercurial repo की जड़ से sitory।

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

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

+8

+1 का सबसे लंबा संस्करण उपयोग करने के लिए अस्थायी रूप से सक्षम करने के लिए इन-स्रोत –

0

यह मानते हुए कि:

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

[extensions] 
purge = 
100

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

hg st -un0 | xargs -0 rm 
+0

+1। मैं वास्तव में शुद्ध विस्तार सक्षम करने के बजाय इसका उपयोग कर समाप्त करता हूं। – simplyharsh

+0

@simplyharsh इस तरह बेहतर है या क्या आपने एक्सटेंशन को जोड़ने से कम काम किया है? –

+3

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

3

निम्न प्रयास करें:

hg st -un | xargs rm 
3
rm $(hg st -u) 

... जहां -u के लिए "ट्रैक न किए गए" आप भी दूसरे राज्य ले सकते हैं खड़ा है।

14

धन्यवाद! यह PowerShell में भी मेरे लिए काम किया:

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

xargs शक्तिशक्ति में काम नहीं करता है - यह एकमात्र उत्तर है जो "विंडोज फ्रेंडली" बॉक्स से बाहर है –

+0

सहमत है ... xargs पर शक्तियों में काम नहीं कर रहा है ... purge अभी भी एक व्यवहार्य विकल्प है, हालांकि – beauXjames

1

आप पर्ज का उपयोग नहीं करना चाहते हैं, तो

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

0

आप

hg purge --all 

उपयोग कर सकते हैं सब पर ध्यान नहीं दिया और ट्रैक न किए गए फ़ाइलें निकालने के लिए:

hg st -un | rm 
संबंधित मुद्दे