【问题标题】:How to treat a symbolic link as a directory in Mercurial?如何将符号链接视为 Mercurial 中的目录?
【发布时间】:2010-12-29 23:33:09
【问题描述】:

从 0.9.4 开始,当添加符号链接时,Mercurial 会跟踪链接本身,而不是它指向的文件或目录。但是,在某些情况下,需要跟踪符号链接指向的文件。

如何强制 Mercurial 将指向目录的符号链接视为常规目录?

【问题讨论】:

  • 你试过用软链接代替吗?
  • 我在 Mac 上,我无法让 ln 生成硬链接。它抱怨目标是一个目录。
  • 来自我的 Linux 机器上的ls(1)-d-F--directory:允许超级用户尝试硬链接目录(注意:由于系统限制,可能会失败,甚至对于超级用户)。
  • @The MYNN:你不能硬链接到目录。
  • 那么您找到解决方案还是停止使用 hg?我在家里使用 xmapp 并且有一些我为我的实际网站付费的 ISP。 xmapp 使用 htdocs,ISP 使用 public_html。我想用 hg 来管理它,然后在 isp 的服务器上添加一个从 public_html 到 htdocs 的符号链接,结果发现这显然是不可能的,因为这个愚蠢的 hg 事情。

标签: mercurial symlink


【解决方案1】:

当您使用目录时,我认为没有办法做到这一点。

如果您使用 mercurial 1.3 或更高版本,您可以尝试使用新的 subrepo 支持,这将让您在本地磁盘上拥有一个 repo 跟踪内容,但它不像链接那样无缝.

【讨论】:

    【解决方案2】:

    当我发现这个时我也很惊讶,但它似乎是Mercurial team don't want to change for security reasons 的一个功能。

    我打算通过使用 rsync 在提交之前从我的 makefile 更新目录的本地副本来解决这个问题。这不是一个很好的解决方案,但我的目录很小,所以应该没问题。

    【讨论】:

      【解决方案3】:

      linux下可以使用

      mount --bind sourcepath targetpath
      

      而不是符号链接,mercurial 会将目标视为通常的目录(在 openSUSE 11.2 和 Mercurial 1.3.1 和 RHEL6 上测试)。

      可以包含在/etc/fstab 中的替代语法是

      mount -o bind sourcepath targetpath
      

      fstab 条目是,那么

      sourcepath targetpath none defaults,bind 0 0
      

      【讨论】:

      • 我已经确认 Rage Steel 推荐的 sudo mount --bind sourcepath targetpath 在 Linux(Ubuntu 10.04 和 Mercurial 1.4.3)上对我有效。
      【解决方案4】:

      只需跟进 Rage Steel 的出色回答(mount --bind):

      为了让您的挂载在启动时准备就绪(因为挂载无法在重启后继续存在),请在 /etc/fstabs 中放置:

      /paht/to/source /path/to/target 绑定默认值,bind 0 0

      只需确保在您的源安装后放置它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 2019-09-06
        • 2020-11-10
        • 2023-01-18
        • 2013-07-28
        • 2014-08-06
        • 2014-04-29
        相关资源
        最近更新 更多