2009-07-31 9 views

Odpowiedz

238

Dodaj rozszerzenie Mercurial o nazwie purge. Jest dystrybuowany przez Mercurial.

To rozszerzenie dodaje polecenie "wyczyść" do "hg", które usuwa pliki nieznane Mercurial. tj. pliki nieśledzone. Tak więc polecenie użytkownika będzie domyślnie włączone, domyślnie nie jest włączone, może uniknie przypadkowego usunięcia plików, których zapomniałeś dodać.

Aby zainstalować to rozszerzenie, dodać to do pliku ustawień mercurial (.hgrc na Uniksie, Mercurial.ini Windows)

[extensions] 
purge = 
+21

'hg purge --all' usunie wszystkie niesledzone i zignorowane pliki.Przydaje się to do czyszczenia kompilacji źródłowych – tacaswell

+17

w celu umożliwienia ext tymczasowo możesz użyć '' 'hg purge --config extensions.purge =' '' – Pykler

2

To powinno załatwić sprawę:

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

+1 dla najdłuższej wersji! :) –

0

Zakładając, że używasz systemu * nix można uruchomić coś takiego:

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

z korzenia mercurial repo sitory.

Nie znam standardowej komendy rtęciowej, aby osiągnąć to samo, ale uważam, że jest w tym przypadku o wiele więcej opcji wiersza polecenia. Jestem pewien, że istnieją "lepsze" rozwiązania i byłbym zainteresowany wysłuchaniem innych sugestii.

Należy używać tego polecenia z ostrożnością, ponieważ nie zostało dokładnie przetestowane.

100

Właściwym sposobem bez czystki jest:

hg st -un0 | xargs -0 rm 
+0

+1. Używam tego zamiast używać rozszerzenia czystego. – simplyharsh

+0

@simplyharsh jest w ten sposób lepszy, czy po prostu uważasz, że to mniej pracy niż dodanie rozszerzenia? –

+3

@YaakovKuperman Wydaje mi się, że dodanie rozszerzenia jest mniej pracujące niż to polecenie (włączanie jednorazowe). Nie włączam przedłużenia usuwania, ponieważ potrzebuję go mniej niż raz w ciągu dwóch tygodni. Zadzwoń do mnie głupio, ale wpisanie tego polecenia daje mi wystarczająco dużo czasu na ponowne przemyślenie, zanim zrobię coś tak destrukcyjnego jak "czystka". – simplyharsh

3

Spróbuj następujący:

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

... gdzie -u oznacza "untracked" można również wybrać inny stan.

14

Dzięki! Ten pracował dla mnie również w PowerShell:

hg st -un | rm 
+2

xargs nie działa w powłoce - jest to jedyna odpowiedź, która jest po wyjęciu z pudełka "przyjazny dla windows" –

+0

uzgodniony ... drugi na xargs nie działający w powłoce ... purge nadal jest realną opcją, choć – beauXjames

1

jeśli nie chcesz używać czystkę:

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

Można użyć

hg purge --all 

usunąć wszystkie pliki ignorowane i nieśledzone

(najpierw należy zainstalować rozszerzenie oczyszczania, jak wyjaśniono w niektórych odpowiedziach)

Powiązane problemy