前言

在使用SVN的过程中往往会遭遇这样的问题:Checkout至本地的文件往往不带可执行权限或可写权限,这是由于SVN的文件属性设置导致的。现时网上对于SVN属性相关的中文文章非常少,基本只描述了问题现象而没有系统地讲解其背后的原理,本文在此做个小结。

SVN文件属性概述

SVN版本控制系统提供了多项文件属性供用户应用于不同的使用场景下(例如防冲突等),此外还提供了针对目录操作的目录属性,本文不涉及该部分。SVN文件属性的名称均以“svn:”开头。以SVN 1.9为例,共支持如下文件属性:

名称描述
svn:keywords扩展关键字
svn:executable文件可执行权限
svn:eol-styleEOL(行尾结束字符)
svn:mime-type文件MIME类型
svn:needs-lock文件锁(一般用于防止在多人开发场景下的提交冲突与内容覆盖)

上述SVN文件属性的详细说明可通过svn ps --help命令获取。

SVN文件属性操作

SVN提供了一组命令供用户对SVN文件属性进行增删改查操作,分别是:

命令快捷命令功能
svn propdelsvn pd / svn pdel删除属性
svn propeditsvn pedit / svn pe编辑属性
svn propgetsvn pget / svn pg获取指定属性的属性值
svn proplistsvn plist / svn pl显示属性
svn propsetsvn pset / svn ps设置属性

上述命令均可通过--help参数获取详细的使用说明。

svn propdel

SVN文件属性删除命令,基本格式为

svn propdel PROPNAME [PATH...]

其中PROPNAME即需要删除的SVN文件属性名,[PATH...]即目标操作对象或文件。以常见的文件解锁操作为例,文件锁定操作由svn:needs-lock属性决定的,若需要清除该属性,可执行如下命令

svn propdel svn:needs-lock main.c

svn propedit

SVN文件属性编辑命令,基本格式为

svn propedit PROPNAME TARGET...

以修改一个文件svn:keywords属性值为例,可执行如下命令

 svn pedit svn:keywords main.c

执行该命令时,SVN将打开一个GNU nano文本编辑器界面供用户修改属性,总体的操作流程和Git基本一致。

svn propget

SVN文件属性值获取命令,基本格式为

svn propget PROPNAME [TARGET[@REV]...]

以获取一个文件的svn:keywords属性值为例,可执行如下命令

svn propget svn:keywords main.c

执行上述命令后,系统将回显对应的属性值。

svn proplist

SVN文件属性列举命令,该命令用于查看目标文件的所有属性(但不显示具体的属性值),其基本格式为

svn proplist [TARGET[@REV]...]

以查看某一文件的所有属性值为例,可执行如下命令

root@ubuntu:~# svn pl main.c
Properties on 'main.c':
  svn:keywords
  svn:needs-lock

svn propset

SVN文件属性设置命令,该命令用于为目标文件添加用户所需的文件属性,其基本格式为

svn propset PROPNAME PROPVAL PATH...

以常见的为目标文件添加可执行权限为例,可执行如下命令

root@ubuntu:~# svn ps svn:executable on main.c
property 'svn:executable' set on 'main.c'

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐