每次git push完成后更新版本?

Ada*_*han 10 git post-update

我们如何在每次推送时使用git更改版本(每个+1)?

例如我有一个2 php文件

libs/lib1.php
libs/lib2.php
Run Code Online (Sandbox Code Playgroud)

在每个标题上通常都有一些信息

/**
 * LIB1.PHP
 * this libs does something like this
 * and that this is a doc for you
 * @version 145
 * @todo something todo
 * @author DAMS
 */

/**
 * LIB2.PHP
 * this libs does something like this
 * and that this is a doc for you
 * @version 445
 * @todo something todo
 * @author DAMS
 */
Run Code Online (Sandbox Code Playgroud)

每次推送时我们可以搜索并添加+1版本吗?

Lau*_*ves 13

您要求的主要是关键字扩展.首先,看一下Git FAQ问题" git是否有关键字扩展? ".它说:

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

如果你真的想这样做,请参阅gitattributes(5).如果您的翻译不可逆(例如SCCS关键字扩展),这可能会有问题.(提示:所提供的$ id $ -expansion把40个字符的十六进制BLOB对象名称到ID,你可以找出哪些承诺在使用类似的脚本包括该BLOB 这个.)

请参阅此处进行讨论,以及GIT如何提供帮助.

所以git确实有类似关键字扩展的东西,但不建议这样做.Git也没有"文件修订版"的概念(这就是你的@version编号所示),所以这不能完全满足你的要求.

您也可以创建一个钩子(可能是一个预接收挂钩?),它会为您增加版本.这只是一个可执行文件(所以它可以是一个shell/Python/Perl/Ruby /无论你喜欢哪种脚本),当你进行推送时它会自动执行.请参阅githooks手册页.

您的钩子脚本将:

  • 识别即将修改的文件.
  • 其中,找到包含该模式的那些 @version \d+
  • 增加版本.您希望增加父提交中的值,而不是文件中当前的值!

请注意,这至少与使用Git FAQ建议的关键字扩展一样糟糕,可能更糟糕.这可能会导致恼人的合并冲突.您也可能很容易在代码中使用误导性的版本号,特别是如果您必须将错误修正提交到旧版本,尽管每当您合并来自多个repos /分支的更改时,它可能也会发生(这在大多数情况下很常见) git工作流程)如果你不小心.

  • 嗯,这取决于你自己决定,但就个人而言,我认为@author和@version最好完全不考虑代码.不要将SCCS知道的东西存储在代码中,而是询问SCCS. (2认同)