如何默认svn:关键字启用?

jac*_*nad 8 svn automatic-properties version-control-keywords

有没有办法默认启用svn:keywords,这样每次添加新的源文件时都不需要为每个关键字启用此属性?

Dan*_*ien 11

是的,使用Subversion自动属性:http://www.dcepler.net/post.cfm/subversion-auto-properties

所述的每个条目[auto-props]部分是一个文件水珠随后的Subversion属性每当匹配水珠的文件被自动应用添加.例如,如果您希望所有CPP文件默认具有一组特定属性,请按照http://www.dcepler.net/post.cfm/subversion-auto-properties上的说明进行操作,并根据以下内容修改以下行:你的偏好:

*.cpp        = svn:eol-style=native; svn:keywords="Author Date Id Rev URL"; svn:mime-type=text/plain

请注意,如果您添加了文件svn add并随后启用了自动属性,则自动属性将不会应用于添加的文件.自动属性仅应用于启用自动属性添加的文件.


Dav*_* W. 3

如上所述,您可以使用自动属性来执行此操作,但您应该问自己一个大问题:

  • 为什么要使用关键字?

当您进行开发时,您可以轻松地使用各种svn命令来获取将存储在关键字中的任何信息,因此这确实没有必要。

有些人声称,一旦软件出现在客户站点上,关键字就是必要的,但是有更好的机制可以用来验证您正在使用的软件的版本。例如,在编译过程中,您可以创建一个具有更有意义的修订 ID(可能是发行号和构建日期)的文件,并将其显示为“关于框”。ID更有意义。

我还知道我不能信任客户站点中可能存在的 shell 脚本中包含的关键字。shell 脚本可能会显示修订号,但 shell 脚本可能已被编辑。

如果您真的非常需要这个,并且需要在您的网站上强制执行,那么您将需要一个预提交触发器,以便在关键字属性不在文件中时失败。只能为客户端设置自动属性。这意味着您必须确保每个开发人员都拥有这套工具。每次他们获得一台新计算机时,您都必须再次验证。

也不保证该财产已记录在案。存储库中的较旧文件即使经过编辑也不会神奇地添加。(仅当文件添加到存储库时才添加自动属性)。也没有什么可以阻止开发人员删除它。或者,在设置中编辑其自动属性。

您必须使用预提交触发器来保证 svn:keywords 属性位于每个需要它的文件上,并且设置正确。预提交挂钩将简单地拒绝提交未设置此属性的事务。开发商将被迫增加房产。经过一番抱怨后,开发人员将设置他们的 Subversion 客户端以使用自动属性并自行维护。

我只是碰巧有一个预提交触发器可以强制执行此操作。该触发器是用 Perl 编写的,但只需要标准模块,因此很容易设置。您可以将其配置为说明哪些文件需要该关键字以及应该将其设置为什么。如果正在提交文件并且未将 svn:keywords 属性设置为正确的值,则提交将失败,并且错误消息将解释提交失败的原因以及开发人员需要执行的操作。