符号链接文件可以在 SVN 中保存吗?

符号链接文件可以在 SVN 中保存吗?

假设我在 SVN 管理路径内创建一个符号链接文件,将该路径提交给 SVN,然后检出该路径。

  1. 符号链接文件会存活下来吗?

  2. 如果符号链接文件由相对路径组成,那么在完成签出后它是否可以“在任何地方”起作用?

  3. 有什么问题吗?

答案1

一般来说,是的

但是,有些客户端无法正确处理符号链接。Eclipse IDE 的 Subclipse 创建目录而不是符号链接。

因此,最好在开始开发之前确保您的客户能够正确地执行此操作。

答案2

Subversion 功能页面

符号链接可以进行版本控制。

Unix 用户可以将符号链接置于版本控制之下。链接在 Unix 工作副本中重新创建,但在 win32 工作副本中不会重新创建。

  1. 是的

  2. 只要权限没有改变,就应该如此。

  3. 不适用于 Windows 结账。

答案3

符号链接无法在 Windows 计算机上保留,这可能是一个问题。
在 Windows 计算机上,符号链接采用占位符文件*的形式,例如:

style.css

链接../www_public/styles.css

*):这些文件具有“ svn:special”属性,其值为“*“。

有时我必须先将内容导出到 Windows 机器,然后才能将项目移动/上传到其目标服务器。

我使用了一个小型 shell 脚本,它可以很好地从占位符文件重新创建实际的符号链接:

#!/bin/sh

grep -lr '^link ' . | while read placeholderfile
do
  linecount=`wc -l $placeholderfile | cut -c1`
  if [ $linecount -eq 0 ] ; then
    linkfile=`cut -c6- "$placeholderfile"`
    ln -sf "$linkfile" "$placeholderfile"

    echo -e "[\E[32;40mOK\E[37;40m] Replaced $placeholderfile with symlink"
  else
    echo -e "[\E[31;40mWARNING\E[37;40m] $placeholderfile contains newline(s)"
  fi
  tput sgr0
done

该脚本假设所有以字符串“ link”开头且不包含换行符的文件都是符号链接。

答案4

NTFS 从一开始就支持符号链接 - 这是 NT 的 POSIX 子系统的遗产。因此您可以创建符号链接。但 Windows 作为操作系统只能从 Win 7 开始识别符号链接。而且它们受到限制 - 按照默认策略,普通用户无法使用 MKLINK 创建符号链接。

相关内容