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

Jam*_*ler 73 mercurial hgignore

mercurial中是否有一个命令会列出当前受源代码管理的所有文件?

我可以做一个dir /s列出我的文件夹和子文件夹中的所有文件,但我不知道哪些已添加到我的存储库.我有各种排除的文件类型和文件夹,我想验证在我的.hgignore文件中设置它们之前没有添加它们.

Ned*_*der 70

hg status --all 将列出树中的所有文件,并带有一个表示其状态的字母:M表示已修改,C表示清除(由hg拥有),I表示已忽略.

对于刚刚忽略的文件,请使用hg status -i.对于将在下次提交时添加的文件,请使用hg status -a.这些只显示您需要知道的内容,不需要扫描长文件列表.

  • 很好的答案,但它没有直接回答这个问题.在干净的工作状态下,`hg status -c`列出所有跟踪的文件和仅跟踪的文件.通过其他更改,`hg status -carmd`将完成这一操作.添加`-n`以排除状态标志. (9认同)
  • 由于其他人可能会在这里寻找信息,我想我会提到我的新hglist扩展,它为Mercurial提供了一个"ls"命令:http://alastairs-place.net/projects/hglist/ (2认同)
  • `hg st -A`是上述命令的缩写版本. (2认同)

JS.*_*JS. 62

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

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

hg locate
Run Code Online (Sandbox Code Playgroud)

从存储库("root")目录:

hg locate -I dir/sub_dir/dir_of_interest
Run Code Online (Sandbox Code Playgroud)

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

hg locate -I sub_dir/dir_of_interest
Run Code Online (Sandbox Code Playgroud)

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

尝试hg help -v locate更多信息.

  • 这才是真正的答案.内德的答案是不首发的. (4认同)
  • 正是我需要的,谢谢.对于只需要列出跟踪文件的人来说,这是一个更好的答案. (2认同)
  • `hg loc`是上述命令的缩写版本. (2认同)
  • 如果你真的想像这样使用`hg locate`,你可以自动获取当前目录:`hg locate -I \`pwd \``. (2认同)

Mik*_*ape 22

hg manifest将仅列出存储库中的文件,同时hg status --all列出存储库结构中的所有文件,并包括正在跟踪的标记和不标记的标记.

  • 这给了我我想要的东西,尽管有一点点缺点,它不能像OP那样被文件夹缩小.它仍然比接受的答案更好. (2认同)