如何在Mercurial中列出属于不同分支的所有文件?

时间:2012-06-22 20:25:29

标签: linux mercurial branch tortoisehg redhat

我是新手,对新手问题感到抱歉 我在/ home / Cassie / localRepo创建了一个名为“localRepo”的本地存储库。我有两个分支,默认和src1-branch。对于默认分支,它具有file1,file3,对于src1-branch,它具有file1,file2和file4。每当我尝试列出该存储库中的所有文件时,它只显示属于当前分支的文件。

例如,如果当前分支是src1-branch,那么如果我键入

ls -l

仅显示

file1 file2 file4

是否有任何方法可以查看所有文件属于同一个存储库,例如

file1 file2 file3 file4

我试过了

hg status --all

它仍然只显示了file1 file2和file4。

我的机器是带有mercurial 1.7和tortoisehg的redhat linux工作站6。

非常感谢,

2 个答案:

答案 0 :(得分:1)

hg manifest --all列出所有修订版中的所有文件,包括已删除和重命名的文件。

假设:

o  5: Removed file1, Renamed file3->file6
|
| @  4: Added file5
| |
| o  3: Added file4
| |
o |  2: Added file3
| |
o |  1: Added file2
|/
o  0: Added file1

hg manifest --all的结果:

file1
file2
file3
file4
file5
file6

答案 1 :(得分:0)

我没有标准的方法,但您可以使用您提到的方法。

hg branches ------ tells you all the branch
branch1
branch2
.....

hg update -C branch1    ----- switches you to a branch1
hg status --all         ----- provides all files for branch1

hg update -C branch2    ----- switches you to branch2
hg status --all         ----- provides all the files for branch2

您可以合并所有分支的输出并删除冗余文件名。 你可以写一个脚本来做到这一点。

-C也很危险,因为它在更改为分支时会丢弃文件。因此,只有在您要提交的工作目录中没有任何更改时才应该使用它。

警告:这个想法通常不是查看两个不同分支中的文件的好方法。

您可以在branch1中添加文件c.txt,然后在branch2中添加另一个具有不同内容的c.txt。

在这种情况下,从语义上讲,它是两个具有相同名称的不同文件。