Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
Version control 是否有允许自定义$Keywords$的源代码管理系统?_Version Control_Templates - Fatal编程技术网

Version control 是否有允许自定义$Keywords$的源代码管理系统?

Version control 是否有允许自定义$Keywords$的源代码管理系统?,version-control,templates,Version Control,Templates,我想知道是否有任何源代码管理系统允许管理员定义自定义关键字,这些关键字在签入时被替换为不同的行为(即类似于$Id$或$Author$等) 我只熟悉SVN和CVS,它们有一组关键字列表,但也有一些类似$LineNo$或$MyLicenceText$的应用程序。我相信还会有其他的用例。其想法是创建一个插件体系结构,其中可以定义或修改关键字的行为 所以我的问题是-有没有一个工具(商业的或开源的)已经有这样的东西了 编辑:将其作为构建的一部分是解决问题的有效方法,但是如果开发人员在签入之前没有进行构建,

我想知道是否有任何源代码管理系统允许管理员定义自定义关键字,这些关键字在签入时被替换为不同的行为(即类似于$Id$或$Author$等)

我只熟悉SVN和CVS,它们有一组关键字列表,但也有一些类似$LineNo$或$MyLicenceText$的应用程序。我相信还会有其他的用例。其想法是创建一个插件体系结构,其中可以定义或修改关键字的行为

所以我的问题是-有没有一个工具(商业的或开源的)已经有这样的东西了


编辑:将其作为构建的一部分是解决问题的有效方法,但是如果开发人员在签入之前没有进行构建,则会导致问题。想象一下,对于$LineNo$之类的东西,如果构建与源代码不完全同步,那么该值很容易不正确。对于具有更多静态行为的关键字(如$MyLicenceText$),在生成时替换是一个有效的解决方案。

您可以查看可以使用中的文件设置的
过滤器属性。这让您可以定义两种转换,称为smudge和clean,它允许您在签出文件时以任意方式对文件进行转换,并在签入文件时再次对其进行转换。

就像Brian在上面对Git所说的那样,Subversion还允许您执行提交前/提交后挂钩,可以替换此表单$的$关键字。我认为SVN世界的问题是,您确实不应该修改文件

以下是SVN手册的警告:

虽然钩子脚本几乎可以做任何事情,但钩子脚本的作者应该在一个方面表现出克制:不要使用钩子脚本修改提交事务。虽然使用钩子脚本自动更正提交的文件中存在的错误、缺点或违反策略的情况可能很诱人,但这样做可能会导致问题。Subversion保留存储库数据某些位的客户端缓存,如果您以这种方式更改提交事务,这些缓存将无法检测到过时。这种不一致性会导致意外的行为。您不应该修改事务,而应该在预提交钩子中验证事务,如果它不满足所需的要求,则拒绝提交。作为奖励,您的用户将了解到谨慎、合规的工作习惯的价值


在使用Ant或Maven的构建过程中,有什么原因不能这样做吗?

为什么不使用触发器?这不管用吗

比如预签出(或预更新,取决于行话)和预签入