hg状态忽略新移动的目录

时间:2012-03-07 03:26:52

标签: version-control mercurial

我有一个_project_目录(好吧,它没有被命名为项目,但从不介意,但是已经强调过了),有几个子目录和一堆文件。大约100Mb,给予或采取的是它的大小.hg repo里面。

现在,我已经有了另一个,让我们调用_something_目录,里面有.hg repo,我已经完全移动到_project_并运行hg status。什么都没出现!

某些的文件日期落后5年,其中一些文件比 project repo早,但我认为这不重要。

在任何地方都没有.hgignore。

有没有人知道为什么hg status不会在其子目录中显示这些“新”文件?名称中的下划线是否与它有关?

...

“嵌套”回购?

\_project_\.hg
\_project_\_something_\.hg

2 个答案:

答案 0 :(得分:5)

您遇到了问题,因为您手动嵌套了存储库。这是错误的,不应该工作。在外部使用hg status时,您不会看到任何添加到嵌套存储库的文件。适当的嵌套将解决问题。

https://www.mercurial-scm.org/wiki/Subrepository

答案 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