SVN的属性

   SVN中的属性是指附着在某个文件,某个目录,或者某个版本库上的键值对,与文件或者版本库的内容相比,它们算是某种隐形内容。可以在一个对象上附着任意多个属性(键值对),唯一的限制就是内存。键名由ASCII字符组成,类似变量名,键值则可以是任意值,包括字符串和二进制。

   属性的修改,提交,更新,冲突解决与内容的修改,提交,更新,冲突解决一致。

   SVN支持两种类型的属性:版本化属性和非版本化属性。

   版本化属性依赖于某一个版本文件或目录而存在,与文件内容一样,接受版本控制。提交针对某个文件或者目录属性的修改,与提交文件内容的修改一样,会产生新的修订版本号(revision number)

   非版本化属性则针对整个版本库,与某个修订版本号(revision number)对应,它显然是无法接受版本控制的(当然你可以查看它在上一个修订号时的值,如果有的话)。

   可以自己定义并添加属性,但是很多实践者并不鼓励这种做法,因为属性类似隐形内容,难以搜索和管理。在实践中,一般是在提交修改时,在log中嵌入一些信息(最好预先设定log的格式,便于编程处理),携带想要的键值对。这种做法当然只能与某次版本对应,但是对于大部分实践,已经够了。

   自定义版本化属性的一个例子是:图片文件的版权信息。

   自定义非版本化属性的一个例子是:提交对应的bug ID。

   那么,SVN属性的重点是,它自身使用一些保留属性为使用者提供方便的特性。这些保留属性的名字以svn:开头,自定义属性的名字最好不要也以这个开头。svn在提交的时候,会自动添加一些保留属性,比如:svn:mime-type,svn:executable。svn还允许定一些配置信息,自定义自动化属性设置。

   保留的版本化属性举例:svn:mime-type,它的值是文件对应的mime类型。

   保留的非版本化属性举例:svn:date(版本提交的日期),svn:author(版本提交的作者),svn:log(版本提交的日志信息)。

   属性操作举例:

   1.添加一个版本化属性:

      svn propset copyright '(c) 2006 Red-Bean Software' calc/button.c(设置button.c的版权信息)

      svn propset license -F /path/to/LICENSE calc/button.c(设置button.c的版权信息,LICENSE的内容被作为licence的值)

      svn propset copyright '(c) 2006 Red-Bean Software' calc/*(设置calc目录下所有文件的版权信息)

      svn propedit copyright calc/button.c(设置或者编辑button.c文件的版权信息,推荐的修改方式)

   2.列出属性:

      svn proplist calc/button.c

      输出:

      Properties on 'calc/button.c':

         copyright

         license

      svn proplist -v calc/button.c

      输出:

      Properties on 'calc/button.c':

         copyright
            (c) 2006 Red-Bean Software
         license

            (c) 2006 Red-Bean Software 

      svn propget copyright calc/button.c

      输出:

      (c) 2006 Red-Bean Software

   3.删除属性:

      svn propdel license calc/button.c

   4.操作非版本化属性(可能存在权限问题,需要svn服务器允许):

      svn propset svn:log "* button.c: Fix a compiler warning." -r11 --revprop

      svn propset svn:log "* button.c: Fix a compiler warning." -r11 --revprop http://svn.example.com/repos/project

原文地址:https://www.cnblogs.com/frydsh/p/2677159.html