Git:构建具有多个分支的项目
我在Git下有一个(大型)Fortran项目。有不同的活动分支,对应于正在开发的功能。我想找到一种方便的方法来为每个分支维护代码的编译版本 代码目前使用Make编译,所有的对象文件与二进制文件一起保存在一个单独的文件夹中(如build_branch1)。目录结构如下所示: MakefileGit:构建具有多个分支的项目,git,Git,我在Git下有一个(大型)Fortran项目。有不同的活动分支,对应于正在开发的功能。我想找到一种方便的方法来为每个分支维护代码的编译版本 代码目前使用Make编译,所有的对象文件与二进制文件一起保存在一个单独的文件夹中(如build_branch1)。目录结构如下所示: Makefile ./src ./build_branch1/objects /build_branch1/bin /构建分支2/对象 /build_branch2/bin 原则上,我可以这样编译所有分支: git签出分支1
./src
./build_branch1/objects
/build_branch1/bin
/构建分支2/对象
/build_branch2/bin
原则上,我可以这样编译所有分支: git签出分支1
make--prefix=build\u branch1
git签出分支2
make--prefix=build\u branch2
等等 Make将源文件(由Git新签出)的时间戳与build_branchN文件夹中的对象文件进行比较,并重新编译已更改的文件。问题是Git更改了branch1和branch2之间不同的所有源文件的时间戳,因此许多文件在不需要重新编译时都会重新编译。由于编译代码需要很长时间(最多30分钟),这可能会带来很大的不便 我想知道在这种情况下最好的策略是什么。我正在考虑在每次结账后更新时间戳,如本文所示: 你会推荐什么?相反,你可以使用在回答这些问题时不存在的机制(包括): 你可以:
- 在每次构建之后,一个注释将使用构建时间戳创建提交
- 在每次构建之前,查找最后一个构建时间戳的注释(在以分支命名的命名空间中),并使用该时间戳修改任何文件(根据git状态,当前未被修改)
- 在Git回购中(因此它可以持续)
- 以一种不会改变当前历史记录的方式(提交的SHA1不会被修改)