我想使用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系统上进行。
建议?
答案 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)
您应该记住,短提交哈希的大小可能会有所不同,具体取决于您在历史记录中提交的提交数量 - 您在代码中使用完整哈希值所付出的代价很小,而使用完整哈希值则是保证总是提到正确的文件。
我将短哈希视为我们可怜的小脑开发人员的便利,而不是程序代码应该用来节省几个字节的东西。