Jak automatycznie usunąć wszystko.pliki orig w Mercurial working tree?

Podczas łączenia liści mercurial .plik orig dla dowolnego nierozwiązanego pliku. Ale po ręcznym rozwiązaniu problemów i oznaczeniu pliku popraw nie usuwa .plik oryg. Czy można go automatycznie usunąć za pomocą jakiegoś polecenia?

Pracuję na Macu więc mogę użyć czegoś takiego:

find . -iname '*.orig' -exec rm '{}' ';'

I alias czy coś, ale wolałbym użyć czegoś takiego jak Hg cleanup...

Aktualizacja:

Od jakiegoś czasu, rozszerzenie Purge jest w pakiecie z Mercurial i rozwiązuje to problem ładnie.

Author: Vadim Kotov, 2009-07-01

11 answers

Osobiście używam

$ rm **/*.orig

Jeśli zmęczą mnie Pliki .orig. Działa to w Zsh i w Bash 4 Po uruchomieniu shopt -s globstar.

Ale jeśli używasz innej powłoki lub chcesz wbudowanego rozwiązania, to może spodoba ci się rozszerzenie purge (link zaktualizowany 2016-08-25). Pozwala to usunąć wszystkie Nie śledzone pliki za pomocą

$ hg purge

Możesz usunąć wszystkie Nie śledzone i ignorowane pliki za pomocą

$ hg purge --all

Zaletą używania hg purge jest to, że oczyści to również katalogi, które stają się puste po usunięciu plików. Linia poleceń rm po prostu pozostawia puste katalogi.

 66
Author: Martin Geisler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-25 19:07:05

Btw. find utility ma działanie -delete więc możesz wpisać tylko:

find <path-to-files> -name '*.orig' -delete

 31
Author: vectoroc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-12 11:18:50

Jeśli chcesz tylko usunąć .pliki orig, a zdarza się, że jesteś na komputerze z systemem Windows, następujące wydaje się działać dobrze:

D:\workspace>hg purge -I **/*.orig --all

Spowoduje to usunięcie wszystkich nie śledzonych plików, które kończą się .orig, ale nie usunie innych nie śledzonych plików, tak jak inne odpowiedzi.

Możesz to przetestować przed uruchomieniem, umieszczając również flagę --print.

 12
Author: mlissner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-14 21:35:04

Następujące zostaną usunięte .pliki orig w całej hierarchii kopii roboczej, a także działa dla ścieżek zawierających spacje:

find . -name *.orig | while read -d $'\n' file; do rm -v "$file"; done;
Używam pseudonimu w moim .bash_profile:
alias clearorig='echo "Removing .orig files..."; find . -name *.orig | \
while read -d $'\''\n'\'' file; do rm -v "$file"; done;'
 4
Author: mccrappy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-13 06:00:26

Zamieściłem tę odpowiedź Przed . Ale to jest właściwe miejsce dla tej odpowiedzi.

Sam zrobiłem ten plik wsadowy.
IF "%1%" == "d" (
    del /s *.orig
    del /s *.rej
 ) ELSE ( 
    del /s /p *.rej
    del /s /p *.orig
 )

Pomoc: Zapisz tę zawartość jako orig.bat

  1. Run orig d aby usunąć wszystkie odrzucone i oryginalne pliki jednocześnie bez potwierdzenia
  2. Run orig aby usunąć Pliki z potwierdzeniem [mechanizm bezpieczeństwa]
Mam nadzieję, że to pomoże.
 1
Author: mahe madhi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:33

Ja osobiscie uzywam nastepujacych z korzenia repo:

hg purge -p -I **/*.orig | xargs rm -f

Jest to trochę lepsze niż użycie 'Hg purge' lub 'Hg purge --all', ponieważ możesz odfiltrować konkretne typy plików, które chcesz dołączyć.

Dla wyjaśnienia:

  • argument-p wyświetla listę plików do wyczyszczenia
  • argument-I whitelist filtruje pliki do włączenia
  • wynikowa lista jest przesyłana do xargs i wykonywana za pomocą polecenia RM-f
 1
Author: Gary,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-11 12:48:46

Pracuję w Powershell i nie widziałem tutaj odpowiedzi:

# NOTE: be in the root of your repository
# fetch all .orig files recursively
$orig = (dir *.orig -recurse) ;

# remove each .orig file
foreach ($item in $orig) { del $($item.FullName) ; }

# afterwards I make sure to remove the references to the .orig files in the repo
# then commit & push
hg addremove ; 
hg commit -m "remove .orig" ;
hg push ;
 1
Author: sonjz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-10 16:02:58

Powinieneś użyć update hook

Update: jest uruchamiany po zakończeniu aktualizacji lub merge katalogu roboczego

 0
Author: dfa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-01 09:38:57

Nie jest to automatyczny sposób usuwania dodatkowych plików, ale jest wystarczająco prosty do uruchomienia ręcznie.

hg st może wyświetlaćnieznane lubnie śledzone pliki. Możesz użyć tego wyjścia jako argumentu do polecenia system rm. Oto przykład, który właśnie wykonałem:

$ # SHOW ONLY THE CRUFT
$ hg status --unknown
? config/settings.rb.orig
? lib/helpers.rb.orig
? routes/main.rb.orig

$ # THE CRUFT WITHOUT THE "?" PREFIX
$ hg status --unknown --no-status
config/settings.rb.orig
lib/helpers.rb.orig
routes/main.rb.orig

$ # SAFELY REMOVE ALL CRUFT
$ rm -- `hg st -un`

Jeśli masz puste katalogi, znaczniki -r i -d dla rm mogą pomóc.

Jako bonus, hg status --ignored może być używany do czyszczenia wszystkich ignorowanych temp pliki, jak również pliki wymiany z edytora (np.

 0
Author: Clint Pachl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-29 00:12:05

Polecenie, którego używam na Linuksie do sprzątania, oszczędza potrzebę zrobienia świeżego wyszukiwania za pomocą find.

Muszą być uruchamiane z katalogu głównego projektu Mercurial

hg status | grep ".orig" | cut -d ' ' -f 2- | xargs rm -f

Lub jeśli chcesz wyczyścić wszystkie nieznane pliki.

hg status | cut -d ' ' -f 2- | xargs rm -f

 0
Author: toddles_fp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-01 22:02:50

Nie podoba mi się wybrana odpowiedź. Nie usuwa wszystkiego na wszystkich poziomach projektu. Używam tego:

for f in `find . | grep .orig$`; do rm "$f"; done

Działa zarówno na Macu jak i * nix

 -1
Author: Collin Klopfenstein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-30 19:58:37