git中相同代码的两个变体:Branch,fork或make单独的存储库?

时间:2013-08-10 23:28:29

标签: git version-control github merge branch

我有一个(96文件)代码的以下两个变体,它们之间的唯一区别在括号中:

  1. DOUBLE-PRECIION(每个变量定义为REAL * 8,每个数字定义为1234D + 02)
  2. QUADRUPLE-PRECISION(每个变量定义为REAL * 16,每个数字定义为1234Q + 02)
  3. 如果我每次更改软件中的任何内容,我希望此更改在上述两种代码变体中保持一致。

    在Git(Hub)中,我应该:

    1. 构建一个单独的存储库(如何轻松合并更改?),
    2. 构建一个不同的分支(但是当所有代码要合并时,分支似乎最合适),
    3. 构建一个分支(但这似乎适合那些无法推送到主分支的人)?
    4. 以下是一些相关的问题,但不是我想要的问题。我已经写了为什么我还没有吞下他们的答案:

      1. maintain different versions of the code simultaneously using git:东武的回答说" git cherry-pick 在许多情况下可能无效"
      2. managing multiple versions of a web application using git:建议 git子模块,但有reasons not to
      3. Keeping track of source code variants:建议使用 #define ,但有FORTRAN等效文件吗?
      4. How to track two version of a project in one GIT repository?:建议第三个分支为"普通"代码,但我没有看到超过2的好处。我不需要在这里使用git cherry-pick吗?

1 个答案:

答案 0 :(得分:0)

很长一段时间以来我做了任何Fortran 但是如果你可以在C中使用基于参数化的宏,你最好的选择就是有一个类似

的条件宏
#define DECLARE_HIGH_PRECISION(Name, Val, Exp) \
#ifdef QUAD_PREC \
REAL*8 %Name% = %Val%Q%Exp% \
#else \
REAL*4 %Name% = %Val%D%Exp% \
#endif 

声明并初始化您的值DECLARE_HIGH_PRECISION(Fred, 23, -3)您可能还需要一个不需要名称的内联值的宏,以便能够执行Fred = Fred * HIGH_PRECISION(43, +6)等操作。 / p>