Git,SVN等是否会进行此类“分支和合并”或类似的事情?

时间:2010-11-16 01:59:14

标签: svn git version-control build

客户端具有相同代码的不同版本,基本上它们复制模板代码库,然后编辑副本,然后在生产中使用该副本作为代码的实例。这意味着有20个版本的代码库运行,但80%的代码是相同的。如果代码在VCS中针对每个构建/分支进行更改,则可以在不更改其工作流的情况下合并源代码,然后执行代码构建。如果重要的话,代码在Perl中。

如果是这样,这叫做什么,VCS是否管理“构建”(它是Perl,实际上只是代码的版本)。

视觉: A,B,C自定义代码分支; X是共享代码

   |
   |
   X
   |
  /|\
 / | \
A  B  C
 \ | /
  \|/
   |
   |
   X
   |
   |
   |\
   | \
 A,B  C
   | /
   |/
   |
   |
   X
   |
   |      
  /|
 / |
A  B,C
 \ |
  \|
   |
   |
  Etc... Where X = 80% of the code.
   |
   |      

3 个答案:

答案 0 :(得分:3)

是的,你可以,但在我解释之前,我强烈建议你不要这样做。将变量东西与共享内容分开并将共享内容转换为某种框架要好得多,这可能就像将变量内容移动到“站点”目录一样简单(我猜你正在构建罐头)网站)有20个子目录,框架在运行时选择(添加到模块路径)(use lib "sites/$site";可能会起作用,但不要引用我的话。)

如果你真的,真的必须通过版本控制来管理它,你可以简单地为每个站点创建一个分支,在主服务器上维护核心代码库,并定期从主服务器合并到每个站点以传播更新。如果变量和共享代码完全分开,则很少需要人工干预。

答案 1 :(得分:2)

我认为这可以通过分支来完成,但我认为拥有一个更智能的模板系统知道如何加载正确版本的模板更为理想。如果你坚持使用分支,你可以通过拥有一个包含所有公共代码的主分支(在Git用语中)和每个变体的分支来实现。对特定版本的更改可以在相关分支上完成,而应该影响所有内容的更改可以在主分支上完成。您必须单独将最新的主更改合并到每个分支中,除非您为其编写了某种自动化。同样,我不认为使用分支这样的东西是最好的主意,但你可能能够使它工作。

答案 2 :(得分:0)

在Git中,您可以拥有Git存储库的多个完整克隆,其中每个克隆都是自己的完整存储库。

  • 创建一个名为client / custom
  • 的新分支
  • 进行客户端更改并将其提交到客户端/自定义
  • 在“origin”repo中进行更改。
  • 提交原始仓库中的更改。
  • 将更改从origin / master拉入client / master
  • 将客户端/自定义重新定位到最新客户端/主服务器将客户端/主服务器的最新更改合并到客户端/自定义中。

这可能不是在Git中最快的方式,但它可以工作(假设您手动解决任何不合格的合并,当然。)

请参阅http://git-scm.com/docs/git-rebase