如何在SVN(TortoiseSVN)中使用关键字

12

我不能使用“关键词替换工具”只保留以下几个数据的文档: -日期 -修订版本 -作者 -HeadURL -身份

我正在进行测试,但我无法实现关键词替换。我创建了一个包含以下信息的Txt文档:

svn:keywords = Date Revision Author HeadURL Id

 $Id: $
 $Revision: $
 $Author: $
 $HeadURL: $
 $Date: $

我不知道它应该以txt文件还是其他格式实施。

我正在使用TortoiseSVN和Subversion Edge工具。


为什么要这样做?那些信息将被存储在代码库中,为什么要把元数据放在文件中呢? - thekbb
Subversion Edge在网站上提供了这些信息,但我需要一份带有版本和作者的文件。这就是为什么我请求帮助的原因。 - Jorge Rocha
4个回答

15

你已经完成了一半的工作。现在你需要使用svn propset来完成剩下的部分,就像文档中所示,页面大约在一半处:

你已经完成了这部分:

例如,假设你有一个名为weather.txt的版本控制文件,它看起来像这样:

Here is the latest report from the front lines.
$LastChangedDate$
$Rev$
Cumulus clouds are appearing more frequently as summer approaches.

现在你需要完成其另一半:

如果该文件上没有设置svn:keywords属性,Subversion将不会进行任何特殊操作。现在,让我们启用LastChangedDate关键字的替换。

$ svn propset svn:keywords "Date Author" weather.txt
property 'svn:keywords' set on 'weather.txt'
$

使用 TortoiseSVN 设置这些属性的最简单方法是右键单击文件,从弹出菜单中选择 TortoiseSVN->Properties,然后在那里配置属性。您可以在 TortoiseSVN 文档项目设置 页面中找到此信息;大约在页面下方的 2/3 处看到 SVN 关键字。(没有提供锚点,但是您可以在到达该页面后搜索该页面。)


这第二部分:"$ svn propset svn:keywords "Date Author" weather.txt property 'svn:keywords' set on 'weather.txt' $"是写在同一个文本文件(weather.txt)中吗?还是写在TortoiseSVN的属性中? - Jorge Rocha

12
所以,例如,如果您想要“作者”、“日期”和“修订版”成为SVN版本控制文件的一部分,则必须将SVN密钥属性添加到该文件中。因此,我的初始文件名为example.xls,这是在第一次提交之前!!!

带有内容

<!--
$Rev::                      $:  Revision of last commit.
$Author::                   $:  Author of last commit.
$Date::                     $:  Date of last commit.
-->
<abv:container xmlns:abv="http://my_org/odel/common">
    <abv:object xmln
....
  1. 您需要为文件设置关键字替换。如果您使用的是Tourtoise SVN,请右键单击文件example.xsl

enter image description here

  1. The Choose New Keywords enter image description here

  2. Select Revision, Date, Author enter image description here

  3. So now when you commit that file unless the Comment <!-- SVN will add the needed values after the ::. So After commit the file will look like:

    $Rev:: 938                  $:  Revision of last commit.
    $Author:: Xelian            $:  Author of last commit.
    $Date:: 2016-07-11 11:21:26#$:  Date of last commit.
    

1
非常感谢您提供详细的步骤。我们并不都使用命令行进行版本控制。 - spemble

7

您需要使用正确的工作流和语法

  1. 将svn-property添加到文件中(如Ken所指出的)
  2. 在文本文件中使用正确的启用关键字语法

$Revision$ $Date$ $Author$


当我给文件添加 svn 属性时,出现以下错误:设置非本地目标的属性 'svn:keywords' 不受支持。 - Jorge Rocha
2
@JorgeRocha - 你必须使用从repo checkout的本地Working Copy文件来完成它。 - Lazy Badger
谢谢,那是我需要的信息。 - Jorge Rocha

0
今天我遇到了同样的问题,但语法和属性都是正确的。
在我的情况下,问题取决于文件的编码(它有UCS-2 LE BOM)。我将文件转换为ANSI,关键字就被替换了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接