硬广:《SVN与TortoiseSVN实战》系列已经写了六篇,本系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,预计再用三、四篇来结束这个系列。

本篇详解一下SVN的属性,属性可以算的上是SVN中的奇技淫巧,像分支、标签、补丁应该在项目中属于标配,而属性则往往应用较少,但是充分的了解对合理使用SVN还是有帮助的。

内容概要:

1、属性的概念和基础操作;

2、属性的关键字展开;

3、使用属性忽略某些文件;

4、设置Mime类型;

5、自动设置属性;

6、引用外部项目;

7、设置签入日志限制;

8、属性冲突;

其实属性还有设置换行、设置可执行标志等用途,但操作简单、用途也较小就不再此详细,有兴趣的可以自行百度。

1、属性的概念和基础操作


SVN不但可以存储属性,还可以存储与文件相关的元数据,文件的元数据就是属性。

属性的操作与文件类似,也有签入、签出以及冲突。

属性相当于关联到文件KV键值对,键值是字符串,而值的类型可以是任何内容,包括二进制文件。

属性可以分为两种:普通属性和特殊属性。特殊属性以svn开头,TortoiseSVN在SVN的基础上又增加了一些特殊属性,这些属性以:tsvn开头。

对属性的操作在TortoiseSVN的Properties菜单项,会打开属性窗口对属性进行增删改:

另外提一点,文件和目录的可用特殊属性是不同的,大家可以分别在文件和目录中使用Properties菜单,查看New按钮弹出的属性。

2、属性的关键字展开


看名字很高大上,也比较抽象难于理解,先简单解释下。

关键字可以理解为SVN内置的一些预定义变量,如:

$Date$ 已知最后提交的日期;
$Revision$ 已知最后提交的版本;
$Author$ 已知最后提交的作者;
$HeadURL$ 此文件在版本库中的 URL;
$Id$ 上述四个关键字的压缩组合;

所谓的展开,就是在你设置属性的文件内容中写入这些关键字,当文件在签入时,SVN会将这些关键字替换为实际的内容,下面实际操作下:

1、新建文本文档,输入以下内容:

$Date$
$Revision$

2、右键菜单,使用TortoiseSVN的Properties菜单项,在属性窗口中点击New按钮,选择Keywords;

3、勾选上Date和Revision;

4、签入文件,再查看一下文件内容,会被SVN关键字展开为以下内容:

$Date: 2015-03-23 19:41:11 +0800 (周一, 23 三月 2015) $
$Revision: 120 $

3、使用属性忽略某些文件


使用SVN中常常遇到这种情况,SVN目录下某些本地生成的文件不想签入到SVN服务器,这些文件仅用于本地操作,如C++项目中的bin和obj目录。

如果你没有把这些目录和文件加入忽略列表,而是签入到SVN,那估计你的项目组成员会遇到满屏的问号。

可以使用忽略属性 svn:ignore 来解决这种问题,本篇介绍的SVN机制有突破一般人理解的地方,请留意。

TortoiseSVN的菜单中已经提供了忽略操作,其实质也是通过忽略属性来实现的,我们来解刨一下TortoiseSVN的操作:

在文件或目录上右键,鼠标移动到图中标示的忽略菜单:

这四个子菜单项分别提供了:

1、将选中的文件加入忽略列表;2、将txt后缀的文件加入到忽略列表;3、将选中的文件和子目录中的相同文件名的文件加入忽略列表;4、不解释,按3推理。

选择第一项,在所在的目录(选择所在目录,不要选择文件)提交签入,查看TortoiseSVN做了哪些修改:

可以看出来进行了两处修改,一处是给文件的所在目录添加了svn:ignore属性,可以右键查看属性设置,发现值为我们添加的文件的文件名。

还有一处是将刚才的文件删除,如果你这时点OK,将本次操作签入的话,文件将会被删掉。当你下次再生成这个文件时,不会显示加号,而是会显示减号。

如果我只想加入忽略列表,而在本地保留这些文件怎么办?

需要先将文件复制出来,然后提交签入,签入后再将文件复制回来,真的就只有这一种方式。

如果你想加入忽略列表里的文件是刚生成的,这时候直接加入到忽略列表里,可以避免刚才的删除、复制操作。

你也可以手动在目录上添加svn:ignore属性来忽略该目录下的文件,但如果文件没有在SVN上删除,操作依然不会有效。

总结一下:你不可能保持一个添加到忽略列表里的文件在SVN上存在。

篇幅所限,其他几个知识点另起一篇来写。


记录,为更好的自己!

SVN与TortoiseSVN实战:属性的奇技淫巧(一)的更多相关文章

  1. SVN与TortoiseSVN实战:属性的奇技淫巧(二)

    硬广:<SVN与TortoiseSVN实战>系列已经写了七篇,本系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解. 关于属性的奇技淫巧较多,分为两篇来写,第一篇详见< ...

  2. SVN与TortoiseSVN实战:文件加锁详解

    硬广:<SVN与TortoiseSVN实战>系列已经写了八篇,本篇是完结篇,整个系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,以技巧性为主. 本篇详解使用Tortoi ...

  3. SVN与TortoiseSVN实战:补丁详解

    硬广:<SVN与TortoiseSVN实战>系列已经写了五篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...

  4. SVN与TortoiseSVN实战:补丁详解(转)

    硬广:<SVN与TortoiseSVN实战>系列已经写了五篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...

  5. SVN与TortoiseSVN实战:冲突详解(二)

    硬广:<SVN与TortoiseSVN实战>系列已经写了四篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...

  6. SVN与TortoiseSVN实战:冲突详解(一)

    硬广:<SVN与TortoiseSVN实战>系列已经写了三篇,第一篇<SVN与TortoiseSVN实战:从入门到精通>,第二篇<SVN与TortoiseSVN实战:标签 ...

  7. SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支

    硬广:<SVN与TortoiseSVN实战>系列已经写了两篇,第一篇<SVN与TortoiseSVN实战:从入门到精通>,关于分支和标签的知识介绍可翻阅第二篇<SVN与T ...

  8. SVN与TortoiseSVN实战:标签与分支

    最近在写<IOS性能调优系列>,今天偷个懒,写写SVN与TortoiseSVN实战的第二篇,标签与分支. 第一篇详见<SVN与TortoiseSVN实战:从入门到精通> SVN ...

  9. SVN与TortoiseSVN实战:从入门到精通

    SVN,版本控制程序,是支撑项目开发的基础工具. 在团队开发中,不管是程序员还是美工.测试等人员,都会用到SVN,通常会把SVN视为源代码管理工具,但对于SVN更准确的理解是: “帮助参与项目人员的管 ...

随机推荐

  1. (C/C++) 基础问答题

    1.简述sizeof和strlen的区别 最常考察的题目之一.主要区别如下: 1)sizeof是一个操作符,strlen是库函数. 2)sizeof的参数可以是数据的类型,也可以是变量,而strlen ...

  2. Can not perform this action after onSaveInstanceState

    java.lang.RuntimeException: Unable to resume activity {com.tongyan.nanjing.subway/com.tongyan.struct ...

  3. [实变函数]4.1 可测函数 (measurable function) 及其性质

    1 记号 (notations) (1) 广义实数: $\overline{\bbR}=\bbR\cup\sed{-\infty}\cup\sed{+\infty}$. (2) 本章主要考虑     ...

  4. H桥电路

    电路特点:有三极管组成4个桥的腿,中间可以使电容或是电机. 应用:直流电机的正反转控制.DC-AC逆变电源(脉冲直流变为周期交流) 关键点:同一个时刻只能对角的一对三极管导通,同侧不能一块导通,共2对 ...

  5. purple-accessData

    ylbtech-class:purple-accessData A, 返回顶部 1,送货时间 #region 送货时间 /// <summary> /// 送货时间 /// </su ...

  6. 安装java开发环境jdk,安装JDK

    JDK可以理解为翻译官,它将Java高级语言翻译为二进制执行. JDK可以编译文件,编译后的文件扩展名为.class. 只要能支持JDK的地方,JAVA就可以运行,这就是JAVA跨平台的性质. 我的是 ...

  7. bootstrap-响应式工具和打印样式

    响应式工具: <div class="container"> <!-- 针对不同的宽度 展示或隐藏相关内容 visible-lg-block 显示 hidden- ...

  8. linux 可用内存查看

    用free命令查看. 下面是一个例子(单位是MB): [root@linuxzgf ~]# free -m total used free shared buffers cachedMem: 7982 ...

  9. T450设置插入USB鼠标时自动禁用触摸板

    刚入手T450,打字时经常碰到触摸板,很是恼火,于是求助万能的度娘,找了卡饭基佬的教程,实测可行,大家可以试试.<win7下如何设置插入USB鼠标时自动禁用触摸板>,地址:www.kafa ...

  10. inno setup 在卸载时如果想保留文件 使用uninsneveruninstall

    一般来说,inno只卸载你安装的文件,自动生成如Thumb.db(缩略图)等文件,卸载程序是不会删除这些的,此时你希望整个安装目录删除则可用你说的方法删除.若想保留某些文件,则必须在[File]段中拷 ...