我有一个git问题,答案可能是“不要那样做”,但是这里是这样:我想在我的代码中有一个对话框(发生Matlab),显示当前版本。这主要是出于我的利益(作为开发人员),目的是检查用户正在运行哪个版本以获取支持。这是相当标准的,我有Matlab代码从文本文件读取版本并显示它。我要实现的技巧是让Git version.txt在每次提交时自动更新。
我使用的代码是.git / hooks / pre-commit中的shell脚本,该脚本实际上将输出转储git describe到文件中version.txt(具有某种格式)。我有主要版本和次要版本的标签,git describe基本上提供了该信息以及自上一个标签以来的提交次数。
问题是,如果我使用预提交钩子,则version.txt指向提交前的提交,但是如果我使用后提交钩子,则version.txt在提交后才被编辑,并且只能提交给一个提交。新提交,将version.txt再次编辑...
我也许可以在提交后使用脚本,该脚本先添加version.txt然后执行git commit --amend --no-edit,但这似乎有些混乱。我也不知道提交后的钩子是否会在修改中运行,从而导致无限循环。
预提交钩子可以编辑代码文件,并提交它们,但是不知道提交描述。有没有解决的办法?也许我还没有找到另一个钩子?我可以在不引起无限循环的情况下进行提交后挂接运行提交吗?如果可以的话,这是一个好主意吗?
有更好的方法吗?
注释后编辑:请注意,我的用户未安装Git。他们从Gitlab下载源代码包并解压缩以运行Matlab代码。因此,任何解决方案都不能即时运行Git,而必须从Git获取版本ID(无论从哪个版本中获取)并将其以某种方式写入(提交的)文件中。