Git:构建具有多个分支的项目

时间:2012-11-21 13:20:42

标签: git

我在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更改了branch1和branch2之间不同的所有源文件的时间戳,因此许多文件在不需要时会重新编译。由于代码需要很长时间才能编译(最多30分钟),这可能会带来很大的不便。

我想知道在这种情况下什么应该是最好的策略。我想在每次结账后更新时间戳,就像在这篇文章中一样:What's the equivalent of use-commit-times for git? 你会推荐什么?

1 个答案:

答案 0 :(得分:3)

而不是modifying timestamp on each checkout,您可以使用在答案时不在的机制(包括mine):git notes

你可以:

  • 在每次构建之后,注意使用构建时间戳构建的提交
  • 在每次构建之前,查找最后一个构建时间戳的注释(在以分支命名的命名空间中),并使用该时间戳修改任何文件(当前未根据git状态进行修改)。

想法是记录您需要的信息:

  • 在Git回购中(因此它可以持续存在)
  • 以不改变当前历史记录的方式(提交的SHA1未被修改)