git - git : Branch, fork 中相同代码的两个变体,还是创建单独的存储库?

标签 git version-control github merge branch

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

  1. DOUBLE-PRECIION(每个变量都定义为 REAL*8,每个数字都定义为 1234D+02)
  2. QUADRUPLE-PRECISION(每个变量都定义为 REAL*16,每个数字都定义为 1234Q+02)

如果我每次更改软件中的任何内容,我希望此更改在上述两种代码变体中保持一致。

在 Git(Hub) 中,我应该:

  1. 构建一个单独的存储库(我将如何轻松 merge 更改?),
  2. 建立一个不同的分支(但是当所有代码要 merge 时分支似乎是最好的),
  3. 建立一个分支(但这似乎是为那些不能推送到主分支的人准备的)?

下面是一些相关的问题,但不是我想要的。我已经写下了为什么我没有吞下他们的答案:

  1. maintain different versions of the code simultaneously using git : Tobu 的回答是“git cherry-pick 在很多情况下可能不起作用”
  2. managing multiple versions of a web application using git : 建议 git submodules 但有 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? : 建议为“通用”代码创建第 3 个分支,但我看不到超过 2 个的好处。我不需要在这里使用 git cherry-pick 吗?

最佳答案

自从我做任何 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)

关于git - git : Branch, fork 中相同代码的两个变体,还是创建单独的存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18167284/

相关文章:

python - 如何检查用户对给定存储库拥有哪些权限

php - CodeIgniter:开发和生产环境

java - Liquibase - 从数据库更改更新更改日志 XML 文件

node.js - npm 通过 package.json 中的依赖项安装私有(private) github 存储库

git - git add 后未上演的更改

git - 我可以为 appharbor 部署自定义 web.config 转换吗?

git - 如何测试git pull的结果?

java - 你如何让 Git 与 IntelliJ 一起工作?

git - 如何执行 GitHub pull 请求

git - 备份和恢复 github 存储库的最简单方法