Суммируйте все проигнорированные файлы / каталоги в ртутном хранилище
hg st -i
показывает все игнорируемые файлы. Это может быть огромный список, если я игнорирую некоторые внешние библиотеки. Можно ли увидеть только каталоги, в которых файлы были проигнорированы? Или какой-то другой способ аккуратно подвести итог, какие файлы / каталоги были проигнорированы?
2 ответа
Если вы работаете в Unix (Linux/OS X), вы можете легко сгенерировать список каталогов, содержащих игнорируемые файлы, с одной строкой ниже.
% hg status -i
I .project
I project/doc/API-notes.bbl
I project/doc/API-notes.blg
I project/doc/API-notes.log
% hg status -ni | sed -e 's/^/.\//' -e 's/\/[^\/]*$/\//' | sort | uniq -c
1 ./
3 ./project/doc/
Первый sed
выражение добавляет ./
перед каждым игнорируемым путем. Второе выражение удаляет все после последней косой черты. Я специально восстанавливаю слэш; оставьте это, если хотите. В заключение, sort | uniq -c
считает и удаляет повторы.
PS. Вы можете превратить вышесказанное в псевдоним hg, чтобы, например, запустить его с hg ignoredirs
; просто поместите следующее в свой .hgrc
:
[alias]
ignoredirs = !$HG status -ni | sed -e 's/^/.\//' -e 's/\/[^\/]*$/\//' | sort | uniq -c
Следующее выполнение в корневом каталоге вашего репозитория:
cat ./.hgignore
или на окнах:
type .\.hginore
Будут отображаться ваши репозитории, игнорирующие правила.
Он может состоять из шаблонов glob и regex и определенных имен файлов, для раздела glob любой путь, заканчивающийся на /
будет игнорировать весь каталог и любые подкаталоги, шаблон формата *.ext
будет игнорировать это расширение во всех подкаталогах, dir/*.ext
будет игнорировать это расширение в подкаталогах, как указано, и т. д.
Иногда стоит вручную перефакторизовать этот файл, поскольку вы можете обнаружить, что игнорируется множество отдельных файлов, которые лучше игнорировать как шаблон или каталог.