这种情况应该建分支还是建仓库 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
shuang
0.04D
V2EX    git

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

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

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

    t/404373
    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     Solana     2822 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 13:14 PVG 21:14 LAX 06:14 JFK 09:14
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86