zoukankan      html  css  js  c++  java
  • SVN与TortoiseSVN实战:属性的奇技淫巧(一)

    硬广:《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上存在。

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


    记录,为更好的自己!

  • 相关阅读:
    mac上python3安装HTMLTestRunner
    双目深度估计传统算法流程及OpenCV的编译注意事项
    深度学习梯度反向传播出现Nan值的原因归类
    1394. Find Lucky Integer in an Array
    1399. Count Largest Group
    1200. Minimum Absolute Difference
    999. Available Captures for Rook
    509. Fibonacci Number
    1160. Find Words That Can Be Formed by Characters
    1122. Relative Sort Array
  • 原文地址:https://www.cnblogs.com/ym123/p/4360869.html
Copyright © 2011-2022 走看看