如何让mercurial注意添加到子目录中的文件? (hg st,hg add)

时间:2010-12-29 13:15:18

标签: mercurial subdirectory

如果我将新文件添加到项目的根目录中,则会在?中显示hg st状态,并添加hg add

但是,如果我将一个新文件添加到子目录中,它根本不会出现在hg st中,只有在我明确添加文件时才会添加(即使我添加了包含该文件的目录)

我怎样才能注意到子目录中的文件,与subversion如何注意到它们的方式类似?

由于

2 个答案:

答案 0 :(得分:14)

嗯,没有任何额外参数的普通hg add也会在子目录中添加文件,它基本上会添加状态未知的所有文件进行跟踪。

但是,如果指定一个简单的掩码,它只对您当前的工作目录(即hg命令的工作目录,而不是与存储库关联的工作目录)进行操作,所以如果您当前位于子目录,它将添加这些文件,如果你在根目录中,它将添加这些文件。

换句话说,这个:

hg add test*

仅对您当前所在目录中的文件进行操作。

您可以通过指定一个掩码来覆盖该行为,该掩码告诉hg对子目录进行操作:

hg add **/test*

这表示“在当前目录和所有子目录中添加与'test *'匹配的所有文件。

如果删除其中一个星号,则只能操作当前工作目录的子目录。

如果您发布了您执行的特定命令,输出(如果有)以及hg st之前和之后的输出,那将会有所帮助。

答案 1 :(得分:3)

您在子目录中也hg init了吗?如果是这样,不要。下面说明了问题:

C:\>hg init project
C:\>cd project
C:\project>hg init sub
C:\project>echo >file1
C:\project>echo >sub\file2
C:\project>hg st
? file1

删除子文件夹的.hg目录以修复它:

C:\project>rd /s/q sub\.hg
C:\project>hg st
? file1
? sub\file2

与Subversion不同,Mercurial仅在项目的根目录中使用.hg目录。