什么SCM支持Windows和Linux下的符号链接?

时间:2010-01-30 07:44:44

标签: windows svn version-control symlink

我发现了subversion doesn't support symlinks under Windows

我想知道是否有人知道能够在Windows和Linux下使用符号链接的SCM工具?

SCM工具目前在Windows下缺少符号链接支持:

  • 清除案例
  • 的Subversion
  • 水银
  • Perforce的

2 个答案:

答案 0 :(得分:3)

大多数SCM专注于存储规范化数据(将您的SCM视为数据库)。这意味着它们存储源文件和构建脚本,而不是存储从它们派生的可执行文件。人们可以存储两者,但会导致不必要的重复。

类似地,符号链接是对其他文件的引用,并且表示与数据规范化类似的问题。

此外,指针一般很难说明。在SCM中添加对指针(符号链接)的支持意味着某些操作需要检查符号链接指向的位置并相应地执行操作。这使得合并变得更加困难,添加/更新符号链接很棘手,因为你需要弄清楚它指向的位置(在repo中与repo之外,两个符号链接到同一个文件等)。

由于这些原因,大多数VCS / SCM不允许您管理符号链接。大多数SCM都支持用户定义的钩子。使用自定义钩子或其他脚本来管理符号链接是一种更好的方法,因为这意味着SCM不必对它们进行推理(它们对它们一无所知),并且您正在撇开它们创建的数据规范化问题。 / p>

因此,最后,您最好编写管理符号链接的脚本,然后在适当的时间调用它们(克隆/检出,更新/提交等)。

答案 1 :(得分:2)

Git 本身自行处理符号链接(符号链接);我的意思是,Git存储文件在存储库中是符号链接的信息。

我认为 Git for Windows (msysGit)可以代表NTFS上工作目录中的符号链接。还有 core.symlinks 配置变量,如果为false则会使Git检出符号链接被检出为包含链接文本的小型普通文件。如果在创建存储库(git clonegit init)时适当,Git将探测并设置'core.symlinks'为false。