符号链接文件能在 SVN 中存活吗?

jld*_*ont 15 linux unix svn

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

  1. 符号链接文件会存在吗?

  2. 如果符号链接文件由相对路径组成,它会在“任何地方”完成结帐吗?

  3. 有陷阱吗?

Joh*_*n T 23

Subversion 功能页面

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

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

  1. 是的

  2. 只要权限未更改,就应该更改。

  3. 不适用于 Windows 结帐。

  • 愚蠢的窗户! (6认同)

dav*_*gr8 16

一般来说,是的

但是,某些客户端不能正确使用符号链接。对于 Eclipse IDE,Subclipse 创建目录而不是符号链接。

因此,最好在开始开发之前确保您的客户做得对。


小智 8

符号链接在 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
Run Code Online (Sandbox Code Playgroud)

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