Как автоматически удалить все.orig файлы в ртутном рабочем дереве?


во время слияния ртутных листьев .orig файл для любого неразрешенного файла. Но после ручного решения проблем и маркировки файла правильно он не удаляет .файл orig. Может ли он быть автоматически удален какой-либо командой?

Я работаю на Mac, поэтому я могу использовать что-то вроде:

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

и псевдоним его или что-то, но я бы предпочел использовать что-то вроде очистки hg...

обновление:

С некоторых пор,очистить расширением is в комплекте с Mercurial и решает эту проблему красиво.

11 53

11 ответов:

лично я использую

$ rm **/*.orig

если я устану от .orig файлы. Это работает в Zsh и в Bash 4 после запуска shopt -s globstar.

но если вы используете другую оболочку или хотите встроенное решение, то, возможно, Вам понравится очистить расширением (ссылка обновлена 2016-08-25). Это позволяет удалить все неотслеженные файлы с помощью

$ hg purge

вы можете удалить все неотслеженные и игнорируемые файлы с помощью

$ hg purge --all

преимущества использования hg purge is что это также будет очистка каталогов, которые становятся пустыми после удаления файлов. Элемент rm командная строка просто оставит пустые каталоги позади.

кстати. find утилита имеет действие -delete таким образом, вы можете ввести только:

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

Если вы просто хотите удалить .orig файлы, и вы случайно находитесь на компьютере с Windows, следующее, кажется, работает хорошо:

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

это приведет к удалению всех неотслеженных файлов, которые заканчиваются .ориг, но не будет удалять другое неотслеживаемый файлы, как и другие ответы.

вы можете проверить это перед запуском, поставив --print флаг в том числе.

следующее будет удалено .orig файлы во всей иерархии рабочей копии, а также работает для путей, содержащих пробелы:

find . -name *.orig | while read -d $'\n' file; do rm -v "$file"; done;

Я использую псевдоним в моем .файл:

alias clearorig='echo "Removing .orig files..."; find . -name *.orig | \
while read -d $'\''\n'\'' file; do rm -v "$file"; done;'

я опубликовал этот ответ до. Но это правильное место для этого ответа.

Я сам сделал этот пакетный файл.

IF "%1%" == "d" (
    del /s *.orig
    del /s *.rej
 ) ELSE ( 
    del /s /p *.rej
    del /s /p *.orig
 )

помогите: Сохраните это содержимое как ориг.летучая мышь

  1. выполнить orig d удалить все браки и orig файлы сразу без подтверждения
  2. выполнить orig для удаления файлов с подтверждением [механизм безопасности]

Надежда это полезно.

Я лично использую следующее из корня РЕПО:

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

Это немного лучше, чем использовать только "HG purge" или "HG purge --all", потому что вы можете отфильтровать конкретные типы файлов, которые вы хотите включить.

объяснение:

  • аргумент-P выводит список файлов, которые будут удалены
  • белый список аргументов-I фильтрует файлы для включения
  • полученный список передается в xargs и выполняется с помощью команда rm-f

Я работаю в Powershell и не видел ответа здесь:

# 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 ;

вы должны использовать обновление крюк

обновление: это выполняется после обновления или слияние рабочий каталог закончился

это не автоматический способ удаления лишних файлов, но он достаточно прост для запуска Вручную.

The hg st может показать неизвестный или не отслеживается файлы. Вы можете использовать этот вывод в качестве аргумента для системы . Вот реальный пример, который я только что выполнил:

$ # 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`

если у вас остались пустые каталоги, то -r и -d флаги rm может помочь.

как бонус, hg status --ignored может использоваться для очистки всех этих игнорируемых временных файлов, а также файлов подкачки из вашего редактора (например, Vim).

команда, которую я использую на Linux для очистки, сохраняет необходимость сделать новый поиск с помощью find.

Они должны быть запущены из корневого каталога проекта Mercurial

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

или если вы хотите удалить все неизвестные файлы.

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

мне не нравится выбранный ответ. Он не удаляет все на всех уровнях проекта. Я использую это:

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

работает как на Mac, так и на *nix