GIT:有当前提交散列和最新的标签上提交文件(GIT: Have current commit ha

2019-09-01 22:29发布

这更多的可能是一个诀窍的问题:

我使用Git版本控制和使用rsync将文件发送一个PHP CMS到测试或生产基地。 现在,我想跟踪什么承诺目前采用防呆和自动化系统的部署,我在想这个问题:

建立一个Git挂钩添加/更新了最新的标记文本文件并提交哈希值。 然后,我可以很容易地查找提交。

我的问题是,在时提交前的脚本将不知道提交哈希值。 有没有弄完任何直接的方法(或涉及到同样的目的的另一种方法)?

感谢事先您输入!

Answer 1:

好吧,我想我得到了一个确定的解决方案:

有所谓的后提交,并在此混帐挂钩是我做的:

  • 我把持有的标签/散列上的.gitignore文件(以避免下一次不必要的改动提交)
  • 让post-commit钩子更新的版本文件。

钩子文件的内容:

#!/bin/sh 
git describe --tags > version.txt 

现在,我敢肯定,该文件是最新日期之后每次提交,所以像我这样在部署之前提交我都设置为长。

注:讨厌初学者的一点:使钩可执行文件,Git会忽略该文件没有,如果它不是警告。

所有关于git的钩子: http://git-scm.com/book/en/Customizing-Git-Git-Hooks

所有有关的.gitignore: http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#Ignoring-Files

干杯,

马丁



Answer 2:

这是一个常见问题。

https://git.wiki.kernel.org/index.php/Git_FAQ#Does_Git_have_keyword_expansion.3F

搜索gitattributes出口SUBST(5),你需要使用git-存档(1)来完成替换。

(%H为您提供的哈希值。为了在获取代码,你仍然需要调用混帐描述的脚本(1),我没有看到一个格式)



Answer 3:

由于您使用rsync将deploy你的代码,然后,做这样的事情:

$ git describe --long > VERSION.txt

随后,包括VERSION.txt在rsync的包。

git的描述字符串如下所示:

$ git describe --long
r1.0-2-gca93d0a

在上面:

  1. 最新标签是R1.0
  2. 2.表明我们是两次提交过去那种标签
  3. G代表“混帐”(好吧,这是一个有点古怪,但是,很好哦)
  4. 目前哈希ca93d0a


文章来源: GIT: Have current commit hash and latest tag in file on commit