2009-07-31 15 views

risposta

238

Aggiungere l'estensione Mercurial denominata epurazione. È distribuito da Mercurial.

Questa estensione aggiunge un comando di "eliminazione" a "hg" che rimuove i file non noti a Mercurial. cioè File non tracciati. Così il vostro comando sarebbe,

hg purge 

Non è abilitato di default, forse per evitare file rimozione accidentale che si è dimenticato di aggiungere.

Per installare questa estensione, aggiungere questo al vostro file di impostazioni Mercurial (.hgrc su Unix, Mercurial.ini su Windows)

[extensions] 
purge = 
+21

'hg purge --all' cancellerà tutti i file non tracciati e ignorati.Questo è utile per ripulire le build in-source – tacaswell

+17

per abilitare temporaneamente l'ext puoi usare '' 'hg purge --config extensions.purge =' '' – Pykler

2

Questo dovrebbe fare il trucco:

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

+1 per la versione più lunga! :) –

0

Supponendo che si utilizza un sistema * nix è possibile eseguire qualcosa di simile:

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

dalla radice del repo Mercurial sitory.

Non conosco un comando mercurial standard per ottenere lo stesso, ma credo che ci siano molte altre opzioni da riga di comando per farlo. Sono sicuro che ci sono soluzioni "migliori" e saremo interessati a ricevere altri suggerimenti.

Utilizzare questo comando con cautela poiché non è stato testato a fondo.

100

Il modo corretto senza spurgo è:

hg st -un0 | xargs -0 rm 
+0

+1. In realtà finisco per usare questo, piuttosto che abilitare l'estensione di eliminazione. – simplyharsh

+0

@simplyharsh è meglio così o hai trovato meno lavoro dell'aggiunta dell'estensione? –

+3

@YaakovKuperman Suppongo che aggiungere un'estensione sia un lavoro minore rispetto a questo comando (attivazione una tantum). Non abilito l'estensione di eliminazione perché ne ho bisogno meno di una volta ogni due settimane. Chiamami anche sciocco, ma digitare questo comando mi dà abbastanza tempo per ripensarci prima di fare qualcosa di così descrittivo come "purge". – simplyharsh

3

Prova seguente:

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

... dove u sta per "non tracciata" si può anche scegliere un altro stato.

14

Grazie! Questo ha funzionato per me anche in PowerShell:

hg st -un | rm 
+2

xargs non funziona in PowerShell - questa è l'unica risposta che è fuori dalla scatola "windows friendly" –

+0

concordato ... secondo su xargs non funziona in PowerShell ... purge è ancora un'opzione praticabile, anche se – beauXjames

1

se non si desidera utilizzare spurgo:

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

È possibile utilizzare

hg purge --all 

per rimuovere tutti i file ignorati e non monitorate

(prima è necessario installare l'estensione di spurgo come spiegato in alcune risposte)

Problemi correlati