Git:检索用于缓存清除目的的短提交哈希

时间:2013-02-15 16:58:49

标签: git ubuntu-12.04 web-deployment

我想使用git hash来缓存目的。

我的部署脚本将在git中查找特定文件,并将使用上次提交文件更改时的哈希版本。这意味着每个文件的缓存清除字符串仅在必要时更改。

到目前为止,我有以下命令,该命令很接近但不太正确:

git log -n 1 --abbrev-commit --pretty=oneline htdocs/js/sample.js

返回:

21b1991 Commit message here

我可以为提交哈希解析该字符串,但如果可能,我宁愿不这样做。

我想让git返回:

21b1991

我当然希望解决方案继续工作,如果git在发出命令时开始返回不同长度的哈希值。我也不太反对使用完整哈希,但我觉得这不是必要的。

部署将基于git,并在Ubuntu 12.04 TLS系统上进行。

建议?

3 个答案:

答案 0 :(得分:6)

尝试使用--pretty=format:%h代替--abbrev-commit --pretty=oneline

E.g。

git log -n 1 --pretty=format:%h htdocs/js/sample.js

答案 1 :(得分:0)

您可以使用awk:

git log -n 1 --abbrev-commit --pretty=oneline htdocs/js/sample.js | awk '{print $1}'

答案 2 :(得分:0)

您应该记住,短提交哈希的大小可能会有所不同,具体取决于您在历史记录中提交的提交数量 - 您在代码中使用完整哈希值所付出的代价很小,而使用完整哈希值则是保证总是提到正确的文件。

我将短哈希视为我们可怜的小脑开发人员的便利,而不是程序代码应该用来节省几个字节的东西。