版本控制是否允许您同时在两个不同版本的项目上工作?

Al *_*l C 2 version-control

真的不确定怎么说出这个问题......

我有一个项目,我想要一个包含共享软件注册,激活等代码的版本,以及没有这个添加代码的另一个版本(即一个不受限制的版本).

然而,创建了两个不同的版本后,我想继续研究整个项目; 如果我更新一个版本的代码,我希望在另一个版本中更新代码.

这可能吗?这是人们谈论创建"分支"时的意思吗?(如果答案是"是",那么我的问题就变成"是否可以将更改提交到项目的一个分支并同时将代码提交给所有分支?")

谢谢,一如既往.

Ric*_*dle 11

可以使用源代码控制分支实现此目的,但这可能不是最好的方法.更好的方法是通过条件编译:

void startup(void)
{
    do_some_stuff();

#ifdef RESTRICTED_VERSION
    do_check_activation();
#endif

    do_some_more_stuff();
}
Run Code Online (Sandbox Code Playgroud)

然后用你编译你的受限版本 -DRESTRICTED_VERSION

你没有说你正在使用什么语言,但假设它是一种编译语言,它可能具有与C #ifdef/ -D系统相当的语言.

  • 这是比版本控制更好的方法.保持两个版本同步并不容易.如果这是唯一的区别,你应该为每个版本编译相同的代码(也就是RichieHindle所说的). (5认同)

Vil*_*lx- 5

不,这不是分支机构的目的.分支是指您想要创建项目的单独副本并在不干扰其他分支的情况下进行处理.您可以从一个分支合并到另一个分支,但它主要是手工完成的.您可以设置一个自动脚本来执行此操作,但如果存在冲突则会失败.

我建议你使用更合适的工具来完成这项工作.您尚未指定使用的语言,但目前大多数语言都支持"条件编译".在C/C++中,这将是#define/#ifdef/#endif的东西.因此,只需将参数传递给编译器即可打开或关闭它.

  • 实际上,人们总是使用分支来做这件事.在我的一个工作中,我们有一个主要的分支,其中包括特定客户请求和支付的功能 - 主要的任何变化都会合并到它,但没有任何东西从它合并到主. (3认同)
  • 我认为这完全取决于变化的范围.如果它是需要几行的东西,当然,在条件编译中这样做.如果它是一个包含数十个或数百个新类的主要新功能,它应该是一个分支或其他东西,最终不会使您的代码难以阅读并且拥挤不使用主要产品系列的东西. (2认同)