我是一位经验不足的Mercurial用户。我正在使用VS2010和Mercurial。我让所有东西都能很好地对抗单个存储库,其中包含一个解决方案文件和两个嵌套在“父”文件夹中的项目。每当我更改文件时,提交过程都会检测到更改等等。
然后我添加了第三个项目。我在一个新文件夹中添加了这个项目,其中新文件夹是包含原始解决方案文件的顶级文件夹的对等项(原始的2个项目嵌套在其中)。尽管第三个项目已添加到解决方案文件中,但Mercurial未将其识别为源代码控制方面的“属于”解决方案。实际上,它根本没有表现为源头控制。
如何将第三个项目添加到同一个存储库中,即使它位于映射到原始Mercurial存储库的原始文件夹“之外”?
非常感谢。
答案 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
的部分