шаблон удаления hg -I, как это работает?

#mercurial #tortoisehg

#mercurial #tortoisehg

Вопрос:

Как удалить все файлы *.bak или *.orig в mercurial?

пример:

 C:devweb>hg stat
? ViewsSystemUnderConstruction.cshtml.bak
? ViewsTopicIndex.cshtml.bak
? ViewsTopicMasterPage.cshtml.bak
? Web.config.bak

C:devweb>hg rem -I *.bak
abort: no files specified
  

Ответ №1:

hg remove удаляет только файлы, которые уже были зафиксированы. AFAIK, в mercurial нет команды для удаления неотслеживаемых файлов.

Чтобы узнать, как работают шаблоны файлов в mercurial, запустите hg help patterns .

Ответ №2:

  1. Неотслеживаемые файлы (знак «?») могут быть удалены операционной системой, а не Mercurial
  2. Вы должны оставить файлы как есть, просто добавьте шаблоны в .hgignore, и после этого файлы, соответствующие шаблонам, больше не будут появляться hg status
  3. Правильная команда remove для удаления отслеживаемых файлов bak и origin будет hg remove -I **.bak -I **.orig

Ответ №3:

Вам следует взглянуть на hg purge расширение:

Удалите файлы, неизвестные Mercurial. Это полезно для проверки локальных и незафиксированных изменений в дереве исходных текстов, которое в остальном является чистым.

Это означает, что purge удалит:

  • Неизвестные файлы: файлы, помеченные «?» по «статусу hg»
  • Пустые каталоги: фактически Mercurial игнорирует каталоги, если они не содержат файлов, находящихся под управлением системы управления версиями

Но это оставит нетронутым:

  • Измененные и неизмененные отслеживаемые файлы
  • Игнорируемые файлы (если не указано —all)
  • В репозиторий добавлены новые файлы (с помощью «hg add»)

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

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

Ответ №4:

Вы можете выполнить следующие две команды:

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

и затем:

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

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