如何在 Mercurial (hg)中列出存储库中的所有文件?

Mercurial 中是否有一个命令列出当前在源代码管理下的所有文件?

我可以使用 dir /s来列出我的文件夹和子文件夹中的所有文件,但是我不知道哪些文件已经添加到了我的存储库中。我有各种排除的文件类型和文件夹,我想验证没有任何一个被添加之前,我设置它们在我的。Hgignore 文件。

27569 次浏览

hg manifest将只列出存储库中的文件,而 hg status --all将列出存储库结构中的所有文件,并包含一个标记,指出哪些文件正在被跟踪,哪些没有被跟踪。

hg status --all将列出树中的所有文件,并用一个字母表示其状态: M 表示修改,C 表示干净(归 hg 所有) ,I 表示忽略。

对于 被忽略了文件,使用 hg status -i。对于下次提交时将为 补充的文件,请使用 hg status -a。它们只显示您需要知道的内容,而不需要扫描长文件列表。

C:\>hg help -v status
hg status [OPTION]... [FILE]...


aliases: st


show changed files in the working directory


Show status of files in the repository. If names are given, only files
that match are shown. Files that are clean or ignored or the source of a
copy/move operation, are not listed unless -c/--clean, -i/--ignored,
-C/--copies or -A/--all are given. Unless options described with "show
only ..." are given, the options -mardu are used.


Option -q/--quiet hides untracked (unknown and ignored) files unless
explicitly requested with -u/--unknown or -i/--ignored.


NOTE: status may appear to disagree with diff if permissions have changed
or a merge has occurred. The standard diff format does not report
permission changes and diff only reports changes relative to one merge
parent.


If one revision is given, it is used as the base revision. If two
revisions are given, the differences between them are shown. The --change
option can also be used as a shortcut to list the changed files of a
revision from its first parent.


The codes used to show the status of files are:


M = modified
A = added
R = removed
C = clean
! = missing (deleted by non-hg command, but still tracked)
? = not tracked
I = ignored
= origin of the previous file listed as A (added)


options:


-A --all             show status of all files
-m --modified        show only modified files
-a --added           show only added files
-r --removed         show only removed files
-d --deleted         show only deleted (but tracked) files
-c --clean           show only files without changes
-u --unknown         show only unknown (not tracked) files
-i --ignored         show only ignored files
-n --no-status       hide status prefix
-C --copies          show source of copied files
-0 --print0          end filenames with NUL, for use with xargs
--rev             show difference from revision
--change          list the changed files of a revision
-I --include         include names matching the given patterns
-X --exclude         exclude names matching the given patterns


global options:
-R --repository      repository root directory or name of overlay bundle file
--cwd             change working directory
-y --noninteractive  do not prompt, assume 'yes' for any required answers
-q --quiet           suppress output
-v --verbose         enable additional output
--config          set/override config option (use 'section.name=value')
--debug           enable debugging output
--debugger        start debugger
--encoding        set the charset encoding (default: cp1252)
--encodingmode    set the charset encoding mode (default: strict)
--traceback       always print a traceback on exception
--time            time how long the command takes
--profile         print command execution profile
--version         output version information and exit
-h --help            display help and exit

您还可以查看 hg locate命令。当我想将文件限制到某个目录时,我使用它和 -I选项。

列出存储库中的所有文件:

hg locate

从存储库(“ root”)目录:

hg locate -I dir/sub_dir/dir_of_interest

传递给 -I的路径需要根据运行命令的目录进行更改。如果在上面的示例中从 dir目录运行该命令,则需要修改参数以定位:

hg locate -I sub_dir/dir_of_interest

输出文件的列表将保持不变,显示存储库中每个文件的完整路径。

试试 hg help -v locate了解更多信息。

仅列出被忽略或添加的文件

要列出 只有被忽略了文件,请执行: hg status -i

对于 补充文件,执行 hg status -a

如果你不喜欢打字太多,你可以把它们缩短到 hg sta -ihg sta -a

status的这两种用法比 locate更简单,它将为您提供您所关心的特定文件状态,因此它明显更不容易出错。

更多有关 hg status的资料

要列出所有文件在一个反复无常的回购做: hg status --all

当文件被列出时,它们前面会有一个前缀:

  M = modified
A = added
R = removed
C = clean
! = missing (deleted by non-hg command, but still tracked)
? = not tracked
I = ignored

如果要列出 只有文件夹中的文件,可以提供一个路径:

  • hg st --all MyFolder-MyFolder 中的所有文件
  • hg sta -i MyFolder-只是在 MyFolder 中忽略文件。

除了表示“忽略”的 -i和表示“添加”的 -a之外,还有其他标志可用于仅列出具有特定状态的文件。

正在接收 help

有关 status命令的全面解释,请阅读 另一个非常有用的答案。由于作者试图通过 请求 Mercurial 发现以上关于 status命令的所有内容,所以它得到了反对票,如下所示:

hg help status

您可以让 Mercurial 告诉您任何类似于这样的命令。如果您想要 Mercurial 的命令列表,那么键入 hg help