我发现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/
答案 0 :(得分:22)
这对我有用:
hg status -q
选项
-q
/--quiet
隐藏未跟踪(未知和已忽略)的文件,除非-u
/--unknown
或-i
/--ignored
明确请求
答案 1 :(得分:11)
您只需添加.hgignore
文件
syntax:glob
.git
.gitattributes
.gitignore
完全忽略.git
和其他与git相关的文件。
如果目标只是限制目录,如果在该目录中添加隐藏文件(this answer之后),您仍然可以使用.hgignore
:
syntax:regexp
^.git/(?!\.hidden).+$
由于Mercurial根本不跟踪目录,因此将忽略.git
中除隐藏目录之外的所有文件,实际上只显示状态中的一行。
除非-q/--quiet
或hg status
明确请求,否则您还可以选择-u/--unknown
(-i/--ignored
}选项,隐藏未跟踪(未知和已忽略)的文件。
但这意味着.git
在这种情况下甚至不会出现。
但是如果目标是将hg状态的一般仅限于目录而不是未跟踪文件的内容,那么我认为这是不可能的:
答案 2 :(得分:1)
我理解的问题是关于如何减少输出:我有类似的需求,但不想跟踪或忽略文件。如果您使用的是* NIX,那么您使用grep,并且您只想在问题陈述时减少输出,例如要删除这些行:
hg status | grep -v "^\?\s\.git"
或者例如没有显示已删除的文件
hg status | grep -v "^R"
在Windows PowerShell中,等效项为:
hg status | Select-String -Pattern ("^[^R]")