Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将svn:关键字默认为已启用?_Svn_Automatic Properties_Version Control Keywords - Fatal编程技术网

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

如何将svn:关键字默认为已启用?,svn,automatic-properties,version-control-keywords,Svn,Automatic Properties,Version Control Keywords,是否有一种默认启用svn:keywords的方法,以便在每次添加新的源文件时不需要为每个关键字启用此属性?是,使用Subversion自动属性: [auto props]部分的每个条目都是一个文件glob,后跟Subversion属性,每当添加与glob匹配的文件时,这些属性都会自动应用。例如,如果希望所有CPP文件在默认情况下都具有特定的属性集,请按照上的说明进行操作,并根据您的首选项修改以下行: *.cpp = svn:eol-style=native; svn:keyword

是否有一种默认启用svn:keywords的方法,以便在每次添加新的源文件时不需要为每个关键字启用此属性?

是,使用Subversion自动属性:

[auto props]
部分的每个条目都是一个文件glob,后跟Subversion属性,每当添加与glob匹配的文件时,这些属性都会自动应用。例如,如果希望所有CPP文件在默认情况下都具有特定的属性集,请按照上的说明进行操作,并根据您的首选项修改以下行:

*.cpp = svn:eol-style=native; svn:keywords="Author Date Id Rev URL"; svn:mime-type=text/plain *.cpp=svn:eol style=native;svn:keywords=“作者日期Id版本URL”;svn:mime类型=文本/普通
请注意,如果添加了带有
svn add
的文件并随后启用了自动属性,则自动属性将不会应用于添加的文件。“自动属性”仅应用于启用“自动属性”后添加的文件。

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

  • 为什么要使用关键字
在进行开发时,您可以轻松地使用各种
svn
命令获取将存储在关键字中的任何信息,因此这实际上是不必要的

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

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

如果您真的非常需要它,并且需要在您的站点上强制执行它,那么当关键字属性不在文件上时,您需要一个预提交触发器来失败。只能为客户端设置自动属性。这意味着您必须确保您的每个开发人员都拥有此集合。每次他们买了一台新电脑,你都必须再次验证

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

您必须使用pre-commit触发器来确保svn:keywords属性位于每个需要它的文件上,并且设置正确。预提交钩子只会拒绝提交未设置此属性的事务。开发商将被迫添加该属性。经过一些抱怨之后,开发人员将设置他们的Subversion客户端以使用自动属性并自己维护它


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

在PL/SQL程序(和SQL脚本)中存储svn关键字为开发过程和系统完整性增加了重要价值。将更改发送到生产时,将通过修订关键字对其进行跟踪和管理。在实现此功能之前,移动文件并确保正确部署文件的过程非常容易出错。此外,我们可以查询数据库中的版本数据(参见下面的SQL)

例如:

JDCSCHEMA   API_TESTER_AGNT PROCEDURE    $LastChangedDate: 
2014-04-08 15:33:38 -0500 (Tue, 08 Apr 2014) $
JDCSCHEMA   API_TESTER_AGNT PROCEDURE    $Revision: 1445 $
JDCSCHEMA   API_TESTER_AGNT PROCEDURE    $LastChangedBy: vamsisx $
JDCSCHEMA   API_TESTER_AGNT PROCEDURE    $URL:svn://jdcsubv01/SQL/JDC/Trunk/API_TESTER_AGNT.prc $

同意-我认为从目录结构编译可执行文件的开发人员有时会忘记这种情况,其中可能有增量补丁,环境可能在不同时间从生产中复制,等等,能够一目了然地看到实际的分支和修订信息是非常有用的。是的,应该有一个健壮的部署过程,是的,代码总是可能在部署后编辑的(虽然您当然不希望),但没有什么比在源代码中自动生成信息更重要的了。对于较新的windows操作系统,配置文件可能位于C:\Users\user\AppData\Roaming\Subversion中
JDCSCHEMA   API_TESTER_AGNT PROCEDURE    $LastChangedDate: 
2014-04-08 15:33:38 -0500 (Tue, 08 Apr 2014) $
JDCSCHEMA   API_TESTER_AGNT PROCEDURE    $Revision: 1445 $
JDCSCHEMA   API_TESTER_AGNT PROCEDURE    $LastChangedBy: vamsisx $
JDCSCHEMA   API_TESTER_AGNT PROCEDURE    $URL:svn://jdcsubv01/SQL/JDC/Trunk/API_TESTER_AGNT.prc $