Предотвратите "статус hg" от показа всего, что находится под необработанными каталогами
Я нахожу вывод hg status
слишком подробным для неподготовленных каталогов. Предположим, у меня есть пустой репозиторий, который управляется как git
, так и hg
. Таким образом, было бы два каталога, .git
и .hg
.
Вывод git status
:
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .hg/
Вывод hg status
:
? .git/HEAD
? .git/config
? .git/description
? .git/hooks/applypatch-msg.sample
? .git/hooks/commit-msg.sample
? .git/hooks/post-commit.sample
? .git/hooks/post-receive.sample
? .git/hooks/post-update.sample
? .git/hooks/pre-applypatch.sample
? .git/hooks/pre-commit.sample
? .git/hooks/pre-rebase.sample
? .git/hooks/prepare-commit-msg.sample
? .git/hooks/update.sample
? .git/info/exclude
Есть ли способ уменьшить свой вывод на что-то вроде следующей строки?
? .git/
Ответы
Ответ 1
Вы можете просто добавить в свой .hgignore
файл
syntax:glob
.git
.gitattributes
.gitignore
Чтобы полностью игнорировать .git
и другие git -связанные файлы.
Если целью является ограничение только каталога, вы можете использовать .hgignore
, если вы добавите скрытый файл в этот каталог (после этот ответ):
syntax:regexp
^.git/(?!\.hidden).+$
Так как Mercurial вообще не отслеживает каталоги, это игнорирует все файлы в .git
, кроме скрытого, эффективно отображая только одну строку в статусе.
У вас также будет опция -q/--quiet
(to hg status
), которая скрывает ненужные (неизвестные и проигнорированные) файлы, если явно не запрашивается с помощью -u/--unknown
или -i/--ignored
.
Но это означает, что .git
даже не появится в этом случае.
Но если цель состоит в том, чтобы в общем случае выводить статус hg только на каталоги, а не на их содержимое для файлов без следа, то я считаю, что это невозможно:
- git отслеживать содержимое файлов, и поскольку контент не добавлен, он упоминает только о том, что верхний каталог имеет "без добавления контента"
- файлы меркурийных дорожек (не каталогов), следовательно, полный список (файлов).
Ответ 2
Это работает для меня:
hg status -q
Параметр -q
/--quiet
скрывает незатребованные (неизвестные и проигнорированные) файлы, если явно не запрошено с помощью -u
/--unknown
или -i
/--ignored
.
Ответ 3
Я понимаю, что вопрос заключается в том, как уменьшить выход: у меня была схожая потребность, но я не хотел, чтобы отслеживать или игнорировать файлы. Если вы используете * NIX, вы используете облако grep, и вы просто хотите уменьшить вывод, как ваш вопрос, например, чтобы избавиться от этих строк:
hg status | grep -v "^\?\s\.git"
Или, например, не показывать удаленные файлы
hg status | grep -v "^R"
В Windows PowerShell эквивалент будет выглядеть следующим образом:
hg status | Select-String -Pattern ("^[^R]")