Запретить "hg status" показывать все, что находится в неотслеживаемых каталогах - PullRequest
13 голосов
/ 26 марта 2010

Я считаю вывод 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/

Ответы [ 3 ]

22 голосов
/ 12 декабря 2012

Это работает для меня:

hg status -q

Параметр -q / --quiet скрывает неотслеживаемые (неизвестные и игнорируемые) файлы, если явно не запрошено с -u / --unknown или -i / --ignored.

11 голосов
/ 26 марта 2010

Вы можете просто добавить в свой .hgignore файл

 syntax:glob
.git
.gitattributes
.gitignore

Чтобы полностью игнорировать .git и другие файлы, связанные с git.

Если цель состоит в том, чтобы ограничиться только каталогом, вы все равно можете использовать .hgignore, если добавляете скрытый файл в этот каталог (после этот ответ ):

 syntax:regexp
 ^.git/(?!\.hidden).+$

Поскольку Mercurial вообще не отслеживает каталоги, он будет игнорировать все файлы в пределах .git, кроме скрытого, эффективно отображая только одну строку в статусе.

У вас также есть опция -q/--quiet (до hg status), которая скрывает неотслеживаемые (неизвестные и игнорируемые) файлы, если явно не запрошено с помощью -u/--unknown или -i/--ignored.
Но это означает, что .git даже не появится в этом случае.


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

  • git отслеживает содержимое файлов, и так как контент не добавляется, он только упоминает, что в верхнем каталоге "нет добавленного контента"
  • файлы ртутных треков (не каталогов), отсюда и полный список (из файлов ).
1 голос
/ 26 февраля 2017

Я понимаю, что вопрос заключается в том, как уменьшить вывод: у меня была похожая потребность, но я не хотел отслеживать или игнорировать файлы. Если вы используете * NIX, вы используете grep в облаке, и вы просто хотите уменьшить вывод, как указано в вашем вопросе, например, чтобы избавиться от следующих строк:

hg status | grep -v "^\?\s\.git" 

Или, например, не показывать удаленные файлы

hg status | grep -v "^R"

В Windows PowerShell эквивалент будет:

hg status | Select-String -Pattern ("^[^R]")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...