在一个相当大的项目中,我想把相同的文件(或文件夹)放在不同的位置。 当它在一个位置被改变时,改变应该被传播。 在Subversion中,我可以使用外部来实现这个行为。
我试图通过使用硬链接和符号链接来解决这个问题,但是Mercurial似乎没有跟踪其中的任何一个。 相反,它将文件的内容提交到其存储库而不是链接属性。 当我克隆版本库时,信息就会丢失。
这是一个特定于Windows的Mercurial行为,还是根本不能跟踪链接? 是否有另一种方式来跟踪可从Mercurial的不同位置访问的文件?
Mercurial 可以跟踪符号链接,但在Windows上签出时看起来很奇怪。 会发生什么情况是Mercurial创建一个链接目标作为文件内容的文件。 不幸的是,不支持在支持Windows的系统上创建真正的符号链接,比如Windows Vista。 这样做的结果是,不能在两个系统之间应该可移植的存储库中使用符号链接。 有关此功能的更多信息,请参见Issue1825中的讨论 。
与svn:externals
最接近的匹配是Mercurial subrepositories 。 取决于你如何使用svn:externals
,subrepos可能是或不是你想要的。 请参阅我的回答关于subrepos的一些建议的另一个问题。 我写了subrepos的代码的一部分,并在我的头顶,我认为在同一个主要的存储库中多次安装一个subrepo听起来像一个混淆的秘诀。 但也许你可以使它工作 – 只是要知道,subrepos是一个棘手的部分Mercurial。