2010-11-04 47 views
3

可能重复:
In Git, how can I write the current commit hash to a file in the same commit嵌入式git的源文件提交哈希

我们坚持定期无需部署开发版本的我们的代码右出的高度不幸的,但不可回避的问题的烤箱。过了一段时间,我们失去了哪个安装基于哪个“中间”未加标签的代码库版本。

git是否提供了一些自动宏或标记可嵌入跟踪文件,将自动被替换为HEAD最新的提交哈希ID'git克隆'或什么?

当然必须有办法做到这一点;即使是当今酷酷的孩子标准RCS,一个彻头彻尾的侏罗纪系统,也有一个可以替代的内置版本变量。

+0

我认为还有另一个更旧的重复,但是当我将答案写到我们选择的那个时,我找不到它。 – Cascabel 2010-11-04 13:32:43

+0

它也被问到这里:http://stackoverflow.com/questions/16524225/how-can-i-populate-the-git-commit-id-into-a-file-when-i-commit。它比这个问题更新,但有一些非常好的答案 – 2016-06-30 20:39:34

回答

1

正如你可以阅读本詹姆斯在通信中发布的问题的答案,人们担心将提交哈希值放入使用git的文件中。

难道不可以在git之外使用脚本解决方案吗?当你需要用git部署一个新版本时,你可以创建一个标签,在你把你的发布tar.gz放到一起之前,或者在你为每个源文件添加标签名称之前检查一下。猜猜有不同的方式可以使用git-archive或其他方法来自动执行此操作。

我想知道的另一件事是,如果git根据它们的SHA1哈希值组织文件,那么您可能无需任何此类标记即可离开。所以你可以根据它的SHA1找出给定文件属于哪个文件。看看cat-file

+3

从文件SHA1回到提交SHA1的方式并不是一件容易的事情;有向无环图是以另一种方式导向的。请参阅http://stackoverflow.com/questions/223678/git-which-commit-has-this-blob – Cascabel 2010-11-04 13:33:38

+0

执行'git'本身的方式:Makefile创建'GIT_VERSION_FILE',其中包含完整版本,并且一个被包含在可执行文件中用于例如打印出来'git版本'。不需要自己搞乱文件。 (对于RCS来说,整个“$ Id:...”的想法是有意义的,它可以追踪单个文件。 – vonbrand 2013-02-27 02:36:20