2012-11-21 85 views
3

我的Git下(大)的Fortran项目。有不同的活动分支,对应于开发中的功能。我想找到维护每个分支的编译版本的便捷方式。混帐:多个分支大厦项目

的代码使用品牌和所有的目标文件都保存在与二进制文件一起,一个单独的文件夹(如build_branch1)目前编制。目录结构是这样的:

的Makefile
./src
./build_branch1/objects
./build_branch1/bin
./build_branch2/objects
./build_branch2/bin
。 ..

原则上,我可以因此编译所有这样的分支:

git的结帐BRANCH1
做前缀= build_branch1
git的结帐BRANCH2
做前缀= build_branch2
等等

制作比较来源的时间戳(新鲜签出通过GIT)与在build_branchN文件夹中的目标文件,并重新编译那些改变。问题是,Git的改变了BRANCH1和BRANCH2之间的差异,使许多文件被重新编译时,他们就不再需要将所有源文件的时间戳。由于代码编译需要很长时间(最长30分钟),这可能是一个很大的不便。

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

回答

3

而不是modifying timestamp on each checkout,你可以使用一个机制,在这些答案时(但不包括mine):git notes

,你可以:

  • 每个生成后,记下犯了每个生成之前生成的时间戳
  • 建,寻找一个音符(分支命名的命名空间),最后构建时间戳和修改任何文件(根据git状态,当前未被修改)与该时间戳。

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

    在GIT回购
  • (因此它可以持续)的方式不改变当前的历史(的SHA1
  • 在提交没有被修改)
+0

谢谢,这是一个不错的主意。我并不是很喜欢在每次结账时做某件事的想法(我做的大部分结账都不是用于构建代码的)。 – calys