我是一名研究生,我的主要研究领域是软件模拟。我有一些用于生成结果的 C++ 代码,但我最大的问题是,为了争取可重复性,我想在我的二进制文件中保存足够的元数据,以便我可以返回生成该二进制文件的确切源代码(主要是看看我发现的某些错误是否使我之前生成的某些结果无效)。
换句话说,当我生成一组输出文件时,我希望二进制文件同时转储当前版本的 git commit 以及任何未完成的更改。这将允许我(理论上)检查该提交,应用保存的补丁,并返回创建二进制文件的确切源代码。
我知道我可以通过手动保存信息或其他东西来做到这一点,但为了确保完全一致,我想直接将信息烘焙到二进制文件中,这样每个二进制文件都可以追溯到它的确切来源。
我熟悉在 makefile 中设置 #define 标志以存储诸如 git commit SHA1 之类的操作,但我认为我需要某种更聪明的方法将整个 git diff 作为字符串存储在二进制文件中。
所以我有几个问题:
- 这是一个可怕的想法吗?是否有更好的方法可以将二进制文件追溯到源代码?
- 实现这一目标的最佳方法是什么?
谢谢。
编辑:我想我没有明确说明我要保存差异的原因是为了捕获当前 HEAD 之上的任何未提交的更改。我可以存储哈希,但如果我错误地使用了包含一些未提交内容的二进制文件,那么我将无法取回正确的源。