Подтвердить что ты не робот

Предотвратите "статус 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/
4b9b3361

Ответ 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]")