如果我将新文件添加到项目的根目录中,则会在?
中显示hg st
状态,并添加hg add
。
但是,如果我将一个新文件添加到子目录中,它根本不会出现在hg st
中,只有在我明确添加文件时才会添加(即使我添加了包含该文件的目录)
我怎样才能注意到子目录中的文件,与subversion如何注意到它们的方式类似?
由于
答案 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
目录。