在一个相当大的项目中,我想将相同的文件(或文件夹)放在不同的位置.当在一个位置更改时,应该传播更改.在Subversion中,我可以使用externals来实现这个行为.
我试图通过使用硬链接和符号链接解决这个问题,但Mercurial似乎没有跟踪任何这些.相反,它将文件的内容提交到其存储库而不是链接属性.当我克隆存储库时,信息丢失.
这是Mercurial的Windows特定行为,还是不能跟踪链接?有没有另一种方法来跟踪可从Mercurial的不同位置访问的文件?
Mercurial可以跟踪符号链接,但在Windows上签出时看起来很奇怪. Mercurial会创建一个包含链接目标的文件作为文件内容.不幸的是,不支持在支持它们的Windows系统(如Windows Vista)上创建真正的符号链接.这样做的结果是您不能在应用于两个系统之间可移植的存储库中使用符号链接.请
see the discussion in Issue1825了解更多有关此功能的信息.
svn:externals最接近的匹配是Mercurial subrepositories.根据你如何使用svn:externals,subrepos可能是也可能不是你想要的.请see my answer另一个关于subrepos的问题的一些建议.我写了一些subrepos的代码,并从我的头顶部,我认为在同一个主仓库里安装一个subrepo几次,听起来像一个混乱的食谱.但也许你可以让它工作 – 只要知道subrepos是一个棘手的部分Mercurial.