Mercurial - 添加不在存储库文件夹中的项目

时间:2011-06-29 22:41:58

标签: visual-studio-2010 mercurial

我是一位经验不足的Mercurial用户。我正在使用VS2010和Mercurial。我让所有东西都能很好地对抗单个存储库,其中包含一个解决方案文件和两个嵌套在“父”文件夹中的项目。每当我更改文件时,提交过程都会检测到更改等等。

然后我添加了第三个项目。我在一个新文件夹中添加了这个项目,其中新文件夹是包含原始解决方案文件的顶级文件夹的对等项(原始的2个项目嵌套在其中)。尽管第三个项目已添加到解决方案文件中,但Mercurial未将其识别为源代码控制方面的“属于”解决方案。实际上,它根本没有表现为源头控制。

如何将第三个项目添加到同一个存储库中,即使它位于映射到原始Mercurial存储库的原始文件夹“之外”?

非常感谢。

3 个答案:

答案 0 :(得分:3)

不,您无法添加任何不在存储库根目录下的内容。 hg add将以X not under root消息中止。将您的文件移动到存储库中,或者移动存储库以使您的所有文件都位于根目录下(请注意,这会产生大量文件移动,而您实际上不应该这样做。)

答案 1 :(得分:1)

我找到了通过创建符号链接(Windows中的mklink)来管理一个仓库中的多个文件夹的最佳方法。我通常在Visual Studio中工作,所以我通常有一个代码库和一个网站目录,但它们不在同一个父文件夹中。

您可以在Windows上创建符号链接,如下所示:

mklink /J "Target Path" "Source Path"

所以我会有这样的结构:

project root
- Code Library
- Solution File
- Web Folder (symlink from locally-hosted website folder)

答案 2 :(得分:0)

您应该为每个项目使用不同的存储库。这是因为当您在hg中进行提交时,提交是针对整个层次结构,而不仅仅是您所在的目录(以及下面)。有关详细信息,请查看最后一个重大概念差异 http://hginit.com/00.html

的部分