저는 대학원생이고 연구를위한 주요 장소는 소프트웨어 시뮬레이션입니다. 나는 결과를 생성하는 데 사용하는 C++ 코드가 있지만 내 큰 문제는 재현성을 위해 노력하기 때문에 바이너리에 충분한 메타 데이터를 저장하여 해당 바이너리를 생성 한 정확한 소스 코드로 돌아갈 수 있다는 것이다. 주로 내가 발견 한 버그가 이전에 생성 된 일부 결과를 무효로하는지 확인하기 위해). 내가 출력 파일의 세트를 생성 할 때git commit 및 git diff를 문자열로 바이너리로 변환 하시겠습니까?
즉는, 나는 이진은 모두 자식이 현재 버전뿐만 아니라 뛰어난 변경 커밋 덤프합니다. 이렇게하면 저에게 (이론적으로) 커밋을 체크 아웃하고, 저장된 패치를 적용하고, 바이너리를 생성 한 정확한 소스 코드로 돌아갈 수 있습니다.
정보를 수동으로 저장하여이 작업을 수행 할 수 있음을 알고 있지만 완전한 일관성을 유지하기 위해 모든 바이너리가 정보를 직접 작성할 수 있도록 바이너리로 바로 굽기를 원합니다. 정확한 출처로 거슬러 올라감.
git commit SHA1과 같은 것을 저장하기 위해 메이크 파일에서 #define 플래그를 설정하는 것에 익숙하지만, git diff를 문자열로 저장하는 더 영리한 방법이 필요하다고 생각합니다. 바이너리
- 이 끔찍한 생각이 :
그래서 나는 몇 가지 질문이? 바이너리를 소스로 추적하는 더 나은 접근법이 있습니까?
- 이 작업을 수행하는 최적의 방법은 무엇입니까?
감사합니다.
편집 : 난은 diff를 저장하려는 이유는 현재의 머리 위에 어떤 커밋되지 않은 변경 사항을 캡처하는 것입니다 내가 명확하게하지 않은 것 같아요. 해시를 저장할 수는 있지만 커밋되지 않은 항목이 포함 된 바이너리를 실수로 사용하면 올바른 소스를 다시 가져올 수 없습니다.
일종의 작동하지만 변경 사항을 테스트하기 위해 바이너리를 빌드 할 수 있어야합니다. 필자가 바이너리를 빌드 할 수 있다면 필연적으로 커밋되지 않은 변경 사항이 추가 된 바이너리로 결과를 생성하는 실수를 범합니다. – KarateSnowMachine
@KarateSnowMachine : 그렇다면 커밋 스크립트를 설정하여 변경 사항이 커밋되지 않은 경우 실패합니다. 자식으로, 어쨌든 커밋을 자주하는 것이 좋습니다. – sleske
@KarateSnowMachine : 편집을 참조하십시오 (너무 짧아서 주석으로 모두 쓸 수 없습니다. 편집하기 전에 충분히 빨리 볼 수 있으면 몇 분 안에 있어야합니다). –