私は大学院生で、主な研究対象はソフトウェア シミュレーションです。結果を生成するために使用する C++ コードがいくつかありますが、私の大きな問題は、再現性を確保するために、バイナリに十分なメタデータを保存して、そのバイナリを生成した正確なソース コードに戻ることができるようにすることです (主に、以前に生成した結果が無効になっているバグを発見したかどうかを確認するためです)。
つまり、一連の出力ファイルを生成するときに、現在のリビジョンの git commit と未処理の変更の両方をバイナリにダンプする必要があります。これにより、(理論的には)そのコミットをチェックアウトし、保存されたパッチを適用して、バイナリを作成した正確なソース コードに戻ることができます。
情報などを手動で保存することで帯域外でこれを実行できることはわかっていますが、完全な一貫性を確保するために、情報をバイナリに直接焼き付けて、すべてのバイナリを追跡できるようにしたいと考えています。その正確なソース。
私はメイクファイルに #define フラグを設定して git commit SHA1 のようなものを保存することには慣れていますが、git diff 全体を文字列としてバイナリに保存するための、より賢い方法が必要だと思います。
だから私はいくつかの質問があります:
- これはひどい考えですか?バイナリをソースまでトレースするためのより良い方法はありますか?
- これを達成するための最適な方法は何ですか?
ありがとう。
編集:差分を保存する理由は、現在のHEADの上にコミットされていない変更をキャプチャするためであることを明確にしていないと思います。ハッシュを保存することはできますが、コミットされていないものをラップしてバイナリを使用するというミスを犯した場合、正しいソースを取り戻すことができません。