我想知道是否有任何源代码管理系统允许管理员定义自定义关键字,这些关键字在签入时会被替换为不同的行为(即类似于$ Id $或$ Author $等)。
我只熟悉SVN和CVS,它们有一组关键字,但会有类似$ LineNo $或$ MyLicenceText $的应用程序。我敢肯定会有其他用例。我们的想法是创建一个插件架构,可以定义或修改关键字的行为。
所以我的问题是 - 是否有一个工具(商业或开源)已经有类似的东西?
编辑:作为构建的一部分执行它是解决问题的有效方法,但是如果开发人员在签入之前没有进行构建,则会导致问题。想象一下像$ LineNo $这样的东西,如果构建与源不完全同步,那么该值可能很容易出错。对于具有更多静态行为的关键字(如$ MyLicenceText $),替换构建是一种有效的解决方案。
答案 0 :(得分:2)
您可以在.gitattributes
中查看可以使用Git文件设置的filter
属性。这允许您定义两个转换,称为 smudge 和 clean ,它们允许您在检查时以任意方式转换文件,并在检查时再将其转换回来它在。
答案 1 :(得分:0)
就像Brian上面对Git所说的那样,Subversion也会让你做前/后提交钩子,可以替换$ form这种形式的关键字$。我认为SVN世界的问题是你真的不应该修改文件。
以下是SVN书中警告的内容:
虽然钩子脚本几乎可以做任何事情,但钩子脚本作者应该有一个维度显示约束:不要使用钩子脚本修改提交事务。虽然使用钩子脚本来自动纠正正在提交的文件中存在的错误或缺点或策略违规可能很诱人,但这样做可能会导致问题。 Subversion保留了某些存储库数据的客户端缓存,如果以这种方式更改提交事务,那些缓存将变得不可思议地过时。这种不一致可能导致意外和意外的行为。您应该只是在预提交挂钩中验证事务,而不是修改事务,如果它不符合所需要求,则拒绝提交。作为奖励,您的用户将学习细心,合规的工作习惯的价值。
在使用Ant或Maven构建过程中,有什么理由不能这样做吗?
答案 2 :(得分:0)
为什么不使用触发器?不行吗?
预登记(或预先更新,取决于行话)和预登记?