我在 Git 下有一个(大)Fortran 项目。有不同的活动分支,对应于正在开发的功能。我想找到一种方便的方法来维护每个分支的代码的编译版本。
该代码当前使用 Make 编译,所有目标文件与二进制文件一起保存在一个单独的文件夹(如 build_branch1)中。目录结构是这样的:
生成文件
./src
./build_branch1/objects
./build_branch1/bin
./build_branch2/objects
./build_branch2/bin
...
因此,原则上,我可以像这样编译所有分支:
git checkout branch1
make --prefix=build_branch1
git checkout branch2
make --prefix=build_branch2
等等...
Make 将源文件的时间戳(由 Git 新签出)与 build_branchN 文件夹中的目标文件进行比较,并重新编译已更改的文件。问题是 Git 更改了分支 1 和分支 2 之间不同的所有源文件的时间戳,因此许多文件在不需要时被重新编译。由于代码需要很长时间才能编译(最多 30 分钟),这可能会带来很大的不便。
我想知道在这种情况下什么应该是最好的策略。我正在考虑在每次结帐后更新时间戳,就像在这篇文章中一样:git 的 use-commit-times 是什么? 你会推荐什么?