gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:03 25 4
gpt4 key购买 nike

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

最佳答案

我不清楚“核心文件模式”是什么意思。 (特别是,当进程崩溃并且 Linux 内核生成核心转储时,它使用 kernel.core_pattern。此设置是系统范围的,而不是每个进程。有一种方法可以运行辅助程序——参见 How to change core pattern only for a particular application?——但这只能让你走到这一步;你仍然必须编写那个程序。另请参见 https://wiki.ubuntu.com/Apport。)但是这里有一个普遍的问题,它有一些 hacky 解决方案,所有这些都是一个非常明显的方法,但仍然有点聪明。

一般问题

您要进行的提交的哈希值在您提交之前是未知的。更糟糕的是,即使您可以计算您将要进行的提交的哈希值(您可以做到,这也很困难),如果您随后更改一些将进入提交的已提交文件的内容,为了包含此哈希,您更改您所做的提交的内容,这意味着您获得不同的实际提交哈希。

简而言之,commit里面的commit的commit hash是不可能commit的。

hacky 解决方案

一般的想法是编写一个您在构建过程中使用的未跟踪文件,以便二进制文件包含提交哈希值很容易找到。对于使用 Make 构建的项目,请参阅 how to include git commit-number into a c++ executable?对于某些方法。

在构建 tarball 时可以使用相同的方法。 Git 能够使用ident 过滤器将文件(blob 对象)的哈希ID 嵌入工作树文件中,但这是ident 的ID em>file,这通常是没有用的。因此,如果您使用 git archive 生成 tar 或 zip 文件,则可以使用 export-subst,如 the gitattributes documentation 中所述。并在 the git archive documentation 中提及.请注意,tar 或 zip 存档还直接包含提交哈希 ID。

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

关于linux - 是否可以将我当前提交的 SHA 添加到核心文件模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52029462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com