我有一个_project_
目录(好吧,它没有被命名为项目,但从不介意,但是已经强调过了),有几个子目录和一堆文件。大约100Mb,给予或采取的是它的大小.hg repo里面。
现在,我已经有了另一个,让我们调用_something_
目录,里面有.hg repo,我已经完全移动到_project_
并运行hg status
。什么都没出现!
某些的文件日期落后5年,其中一些文件比 project repo早,但我认为这不重要。
在任何地方都没有.hgignore。
有没有人知道为什么hg status
不会在其子目录中显示这些“新”文件?名称中的下划线是否与它有关?
...
“嵌套”回购?
\_project_\.hg
\_project_\_something_\.hg
答案 0 :(得分:5)
您遇到了问题,因为您手动嵌套了存储库。这是错误的,不应该工作。在外部使用hg status
时,您不会看到任何添加到嵌套存储库的文件。适当的嵌套将解决问题。
答案 1 :(得分:2)
如果您使用以下方式嵌套存储库:
\_project_\.hg
\_project_\_something_\.hg
然后所有Mercurial命令都会非常小心地忽略嵌套的_something_
存储库。
这样做是因为在两个存储库中跟踪_something_
中的文件会很奇怪。此外,有许多人控制他们的主目录版本,以便有两个
/home/mg/.hg/
和
/home/mg/src/foo/.hg/
内部foo
存储库只是我工作的东西的克隆。当我在我的主目录的根目录中时,hg status
不会在foo
中显示文件,这真是太好了。
与zerkms指出的一样,我们有一个名为subrepositories的功能,可让您以特殊方式使用嵌套存储库。不过,我不认为这就是你想要的。
我认为您不希望丢失_something_
中文件的历史记录以及做希望_something_
置于_project_
内。如果是这样,那么您可以重命名_something_
中的文件以将它们向下推一层,然后在顶层添加_project_
的文件。有关详细信息,请参阅this answer。