在Windows上使用mercurial跟踪硬链接或符号链接

时间:2012-01-03 12:15:43

标签: windows mercurial

在一个相当大的项目中,我想将相同的文件(或文件夹)放在不同的位置。在一个位置更改时,应传播更改。在Subversion中,我可以使用externals来实现这种行为。

我试图通过使用硬链接和符号链接来解决这个问题,但Mercurial似乎没有跟踪它们中的任何一个。相反,它将文件的内容提交到其存储库而不是link属性。当我克隆存储库时,信息会丢失。

这是Mercurial的Windows特定行为还是根本无法跟踪链接?是否有其他方法可以跟踪可从Mercurial中的不同位置访问的文件?

1 个答案:

答案 0 :(得分:16)

Mercurial 可以跟踪符号链接,但在Windows上签出时看起来很奇怪。发生的事情是Mercurial创建一个文件,其中链接目标作为文件 content 。遗憾的是,不支持在支持它们的Windows系统上创建真正的符号链接,例如Windows Vista。这样做的结果是您不能在应该在两个系统之间移植的存储库中使用符号链接。有关此功能的更多信息,请see the discussion in Issue1825

svn:externals的最接近匹配是Mercurial subrepositories。根据您使用svn:externals的方式,subrepos可能是您想要的,也可能不是。请see my answer另一个关于subrepos的问题,以获得一些建议。我为subrepos编写了部分代码并且在我的脑海中,我认为在同一个主存储库中多次安装subrepo听起来像是一个混乱的秘诀。但也许你可以让它工作 - 只要知道subrepos是Mercurial的一个棘手的部分。