Linux 是否可以将当前提交的SHA添加到核心文件模式?

Linux 是否可以将当前提交的SHA添加到核心文件模式?,linux,git,coredump,Linux,Git,Coredump,我希望将gitsha添加到核心文件模式中,这样我就可以确切地知道生成核心文件使用了哪个提交。 有办法做到这一点吗?我不清楚您所说的“核心文件模式”是什么意思。(特别是,当进程崩溃并且Linux内核生成内核转储时,它使用内核.core_模式。此设置是系统范围的,而不是每个进程。有一种方法可以运行辅助程序,请参阅-但这仅限于此;您仍然需要编写该程序。另请参见。)但这里有一个普遍的问题,它有一些骇人的解决方案,所有这些都是一个非常明显的方法的变体,这个方法仍然有点聪明 一般问题 您将要进行的提交的散列

我希望将gitsha添加到核心文件模式中,这样我就可以确切地知道生成核心文件使用了哪个提交。
有办法做到这一点吗?

我不清楚您所说的“核心文件模式”是什么意思。(特别是,当进程崩溃并且Linux内核生成内核转储时,它使用
内核.core_模式
。此设置是系统范围的,而不是每个进程。有一种方法可以运行辅助程序,请参阅-但这仅限于此;您仍然需要编写该程序。另请参见。)但这里有一个普遍的问题,它有一些骇人的解决方案,所有这些都是一个非常明显的方法的变体,这个方法仍然有点聪明

一般问题 您将要进行的提交的散列直到完成后才知道。更糟糕的是,即使您可以计算您将要进行的提交的哈希值,但如果您随后更改将进入提交的某个提交文件的内容,以便包含此哈希值,您也很难更改您进行的提交的内容,这意味着您将获得不同的实际提交哈希值

简言之,不可能在提交内提交提交的提交散列

骇人的解决方案 一般的想法是编写一个在构建过程中使用的未跟踪文件,以便二进制文件包含容易找到的提交散列。有关使用Make生成的项目,请参阅以了解一些方法

建造柏油球时也可以使用同样的方法。Git能够使用ident过滤器将文件(blob对象)的散列ID嵌入到工作树文件中,但这是文件的ID,通常没有用处。因此,如果您使用
git archive
生成tar或zip文件,则可以使用
export subst
,如中所述。请注意,tar或zip归档文件还直接保存提交散列ID

最后,您可以编写自己的自定义污迹过滤器,将提交哈希ID嵌入到工作树文件中。在没有等效于运行外部make进程来生成二进制文件的语言中,这可能很有用。这里的问题是,当污迹过滤器读取
HEAD
时,它被设置为
git签出完成之前的值,而不是完成之后的值。这使得提取正确的提交哈希ID变得非常困难(如果存在一个正确的注释,
git descripe
将在指示时附加
-dirty
,以指示工作树与
提交不匹配(如果适当)