V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
shuang
V2EX  ›  git

这种情况应该建分支还是建仓库

  •  
  •   shuang · 2019-05-23 15:34:10 +08:00 · 4399 次点击
    这是一个创建于 2012 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个 toB 的 SaaS 系统,包含一个通用版,还有若干大客户定制版。定制版是在通用版的基础上开发的,用于满足客户的个性化需求,不同客户对同一功能的需求可能是有冲突的。
    之前是用 svn 管理代码的,每个版本都是一个独立的仓库。有时候某个功能有 bug,所有版本都要修复;定制版上线了一个功能,通用版可能也想要。只能手动复制代码,每个仓库提交一遍。

    现在准备切换到 git,是应该在同一个 repo 下建多个不同的 branch,还是建多个不同的 repo ?

    https://www.v2ex.com/t/404373
    https://www.v2ex.com/t/553604
    相关讨论帖里提到了一些方案
    开关控制:通用平台目前有这样做,但也仅限小的差异
    模块化:结合我司的产品和研发资源来看可能做不到
    22 条回复    2019-05-24 10:05:54 +08:00
    shuang
        1
    shuang  
    OP
       2019-05-23 15:46:05 +08:00
    @iguoji
    @daodao116
    你们现在是怎么做的呢
    swulling
        2
    swulling  
       2019-05-23 15:47:38 +08:00 via iPhone
    最好是一套代码库,功能区别用配置文件解决。

    把 diff 全都做成可配置的,如果是两套代码,迟早分裂
    shuang
        3
    shuang  
    OP
       2019-05-23 16:29:10 +08:00
    @swulling
    目前通用版和定制版已经分裂了,应该选哪种方案
    ryanking8215
        4
    ryanking8215  
       2019-05-23 16:40:44 +08:00
    如果通用版和定制版分别要区分 master 分支,develop 分支,feature 分支,release 分支,hotfix 分支等(这些概念取自 gitflow), 建议使用多仓库方式管理。
    index90
        5
    index90  
       2019-05-23 16:47:32 +08:00
    同一个 repo 方便 cherrypick 和 bugfix,不同 repo 就只能人工 copy 代码了。

    如果各自演进,互不相干就分开吧。既然分裂了,分 repo 只是时间问题。
    shuang
        6
    shuang  
    OP
       2019-05-23 16:53:40 +08:00
    @ryanking8215
    想过用 masterA developA masterB developB 这种方式,就是分支看起来有点乱

    @index90
    目前就是在纠结是否要分 repo
    同一 repo 多个分支方便合并代码,但是分支有点乱
    不同 repo 分支好维护,合并代码很麻烦
    mooncakejs
        7
    mooncakejs  
       2019-05-23 16:55:11 +08:00   ❤️ 2
    拆分 module,公共部分单独 repo (可能多个), 不同定制版 submodule 引入 公共的 repo
    hhhsuan
        8
    hhhsuan  
       2019-05-23 16:57:37 +08:00 via Android
    如果不打算合回来的话,那就分仓库
    annielong
        9
    annielong  
       2019-05-23 16:58:26 +08:00
    我手头上是分模块,核心通用的做 master,定制部分做分支,反正适合自己用就行
    xfriday
        10
    xfriday  
       2019-05-23 17:22:29 +08:00
    建议做成 N+1 个项目,其中 1 作为公共服务以微服务的方式给其他 N 个项目调用
    chaleaochexist
        11
    chaleaochexist  
       2019-05-23 17:27:31 +08:00
    分支.
    最起码有 cherry-pick.
    pmispig
        12
    pmispig  
       2019-05-23 17:43:39 +08:00
    不同的分支,因为涉及到代码合并,有时候通用版的功能要合并到定制版
    index90
        13
    index90  
       2019-05-23 17:57:18 +08:00
    @shuang branch 可以建“文件夹”啊,管理怎么乱呢?
    strongcoder
        14
    strongcoder  
       2019-05-23 17:57:46 +08:00
    多分支 不要多 repo 就像上面很多人说 最起码有个 cherry-pick 好用
    dremy
        15
    dremy  
       2019-05-23 18:00:35 +08:00 via iPhone
    分仓库啊,合并的事情,不是可以通过 pull upstream 来解决么
    Xbluer
        16
    Xbluer  
       2019-05-23 18:15:58 +08:00 via iPhone
    git flow 里面有 support 类型的分支。应该是符合你的需求的
    shuang
        17
    shuang  
    OP
       2019-05-23 18:57:24 +08:00
    @dremy 分仓库有哪些优点呢。我对 git 还不是太熟,上游的一部分代码合并到下游,下游的一部分代码合并到上游,这些都能实现吗

    @Xbluer support 只是人为约定的分支名称吧
    shuang
        18
    shuang  
    OP
       2019-05-23 18:59:38 +08:00
    @index90
    siteA/master
    siteA/develop
    siteB/master
    siteB/develop

    是这样吗
    pangliang
        19
    pangliang  
       2019-05-23 19:04:17 +08:00
    对于 git 来说多仓库只是不同的 remote 而已
    zibber
        20
    zibber  
       2019-05-23 20:12:58 +08:00
    两个 repo 耦合的用 submodule
    xuanbg
        21
    xuanbg  
       2019-05-24 02:18:45 +08:00
    分支可以的,但要保留基础分支用于公共部分的开发。公共部分的变更可以合并到各定制版本的发布分支,各发布分支永远不要往公共分支合并。
    shuang
        22
    shuang  
    OP
       2019-05-24 10:05:54 +08:00
    从评论看支持同一仓库建分支的多一些,我也打算这样做。如果后面发现确实应该独立成 repo,操作起来也简单。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   887 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:46 · PVG 05:46 · LAX 13:46 · JFK 16:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.