【问题标题】:Tracking hard or symbolic links with mercurial on Windows在 Windows 上使用 mercurial 跟踪硬链接或符号链接
【发布时间】:2012-02-01 11:40:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: windows mercurial


    【解决方案1】:

    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 的一个棘手部分。

    【讨论】:

    • 但 NTFS 从 Windows Vista 开始支持符号链接。
    • 哇,已经5年了? :-) 奇怪的是我们当时没有创建它们。我鼓励你使用this answerhackable Mercurial,看看你能不能想出点什么。相关的起点是mercurial.windows.checklink和调用checklink的地方判断是否可以调用os.symlink
    • 原来 Python 在 changeset 730b728e5aef 中添加了对 Windows 符号链接的支持。但是,这只对 Python 3 有帮助,而 Mercurial 只能在 Python 2 上运行。
    • Windows 符号链接需要管理员权限,这使得它们完全不适合在 Mercurial 等用户级工具中的日常使用。 Python 3 与它无关。
    • @mpm:是的,您需要“创建符号链接”权限,并且管理员默认拥有该权限。据我了解,普通用户也可以被授予特权,而无需将其设为管理员。
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多