当前位置:  开发笔记 > 运维 > 正文

git是否有类似`svn propset svn:keywords`或pre-/ post-commit钩子的东西?

如何解决《git是否有类似`svnpropsetsvn:keywords`或pre-/post-commit钩子的东西?》经验,为你挑选了2个好方法。

浏览git文档时,我看不到任何类似于SVN的提交钩子或"propset"功能的东西,可以说,只要它提交到存储库,就可以更新文件中的版本号或版权声明.

git用户是否希望为这种功能编写外部脚本(这看起来似乎不可能)或者我只是错过了一些明显的东西?

编辑:为了清楚,我更感兴趣,例如,

svn propset svn:keywords "Author Date Id Revision" expl3.dtx

这样的字符串:

$Id: expl3.dtx 780 2008-08-30 12:32:34Z morten $

每当发生提交时,都会与相关信息保持同步.



1> emk..:

我在其他地方写了一个相当完整的答案,代码显示了如何做到这一点.总结:

    你可能不想这样做.使用git describe是一种合理的选择.

    如果你确实需要这样做,$Id$并且$Format$相当容易.

    任何更高级的东西都需要使用gitattributes和自定义过滤器.我提供了一个示例实现$Date$.

基于钩子函数的解决方案通常没有帮助,因为它们会使您的工作副本变脏.



2> Jordi Bunste..:

引用Git常见问题解答:

git是否有关键字扩展?

不建议.关键字扩展会导致各种奇怪的问题,并且无论如何都不是很有用,特别是在SCM的上下文中.在git之外,您可以使用脚本执行关键字扩展.Linux内核导出脚本执行此操作以在Makefile中设置EXTRA_VERSION变量.

如果你真的想这样做,请参阅gitattributes(5).如果您的翻译不可逆(例如SCCS关键字扩展),这可能会有问题.


我发现这对git项目非常有效:https://github.com/turon/git-rcs-keywords
感谢您指向Git FAQ的指针.我发现这句话很有趣:"关键词扩展......无论如何都不是很有用." 作为支持开发人员,我每天都会参考源代码属性.例如,我们的数据库存储过程在源代码管理中,顶部有修订属性.我可以使用revision属性来验证数据库上安装了哪个版本的存储过程.
推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有