V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Eoss
V2EX  ›  问与答

请教大家一个关于 git 多项目框架代码同步问题

  •  
  •   Eoss · 2018-01-30 23:18:36 +08:00 via iPhone · 1713 次点击
    这是一个创建于 2491 天前的主题,其中的信息可能已经有所发展或是发生改变。
    小公司在开发适用自己的框架。然后会有多个项目基于该框架进行业务开发。

    #### 我的打算
    框架本身一个 git 仓库
    一个项目一个 git 仓库

    #### 那么问题来了
    框架更新的内容如何同步到各个项目中去?毕竟框架可能有 bug 修复。


    如果能够同步,那么同步方式是什么?是否可以达到以下的一种功能?或者多种功能都能实现?

    - 框架主动推送。即框架每次更新,同时推送到各项目中。
    - 如果能主动推送,是否可以有选择性的推送?即功能 A 推给单个项目,功能 B 推给所有项目。
    - 项目手动更新。即当项目有需要时,便从框架 git 仓库拉取代码来更新。
    第 1 条附言  ·  2018-01-31 00:05:06 +08:00
    事实上,我所说的框架是,后端代码和前端代码的(基础功能)集合体。类似 php 的 tp 框架那种。

    大概说人话就是,tp 修复 bug 或更新了功能,我的项目要怎么更新才不会影响现有代码。当然要更新方式要优雅点。

    公司的开发人员包括我,基本只会 git 管理工具。所以希望尽量用 git 来完成。当然楼上说的 CI/CD 会去了解下。

    另外吐槽下,ios 的浏览器的文本选择真的智障,没见过比这智障的了。要复制一段内容,老是选一整块。
    13 条回复    2018-01-31 12:39:03 +08:00
    hljjhb
        1
    hljjhb  
       2018-01-30 23:22:03 +08:00 via Android   ❤️ 1
    git submodule
    brickyang
        2
    brickyang  
       2018-01-30 23:28:51 +08:00 via iPhone   ❤️ 1
    这不是 Git 要做的事吧?这应该是 CI/CD 的事。

    最不济也可以写个脚本处理。
    Hstar
        3
    Hstar  
       2018-01-30 23:41:41 +08:00   ❤️ 1
    框架可以用包管理工具来管, 比如 pypi, npm 等, 自己搭建一个私有源.
    或者就是 git submodule 来管理了.
    Eoss
        4
    Eoss  
    OP
       2018-01-31 00:00:42 +08:00 via iPhone
    @hljjhb
    @brickyang
    @Hstar
    事实上,我所说的框架是,后端代码和前端代码的(基础功能)集合体。类似 php 的 tp 框架那种。

    大概说人话就是,tp 修复 bug 或更新了功能,我的项目要怎么更新才不会影响现有代码。当然要更新方式要优雅点。

    公司的开发人员包括我,基本只会 git 管理工具。所以希望尽量用 git 来完成。当然楼上说的 CI/CD 会去了解下。

    关于 git submodule 能否更详细描述其功能?其能实现上述功能的哪点?
    Eoss
        5
    Eoss  
    OP
       2018-01-31 00:20:46 +08:00 via iPhone
    @hljjhb
    @Hstar
    看了下 git submodule。
    其情况是,A 项目开发过程中,需要使用到 B 项目,使用 submodule 把 B 项目引用进来。

    但我的情况是,A 项目是基于 B 项目进行开发的。
    这个应该不适应吧?
    Mutoo
        6
    Mutoo  
       2018-01-31 07:03:46 +08:00   ❤️ 1
    @Eoss 适不适应要看你的项目结构了。

    以 WP 为例,Wordpress Core 支持单独放在一个子目录,而配置文件和主题放在父目录,这样的话可以将 WP Core 和其它目录分离,单独管理。用 submodule 完全没问题。
    340244120
        7
    340244120  
       2018-01-31 09:03:30 +08:00 via iPhone   ❤️ 1
    把基础框架的仓库作为项目框架的远程仓库呗,只 fetch 不 push。不过基础框架被侵入太多的话,fetch 下来冲突也挺多的,最好还是降低两套代码的耦合性,能用子模块就最理想了。
    micean
        8
    micean  
       2018-01-31 09:17:41 +08:00   ❤️ 1
    既然是基础框架,难道不应该是 deploy 到公共仓库吗?
    Eoss
        9
    Eoss  
    OP
       2018-01-31 09:34:48 +08:00 via iPhone
    @340244120
    是说,项目仓库 remote add 框架仓库,然后 fetch 开发。之后把提交都 push 到项目仓库吗?
    那这之中如何避免(或阻止)提交被 push 到框架仓库?


    @micean
    抱歉。对 git 还不熟悉。如何不麻烦的话,说详细点吧。
    Charkey
        10
    Charkey  
       2018-01-31 09:46:14 +08:00 via iPhone
    或许,你可以在框架本身做过改动后,生成一个包括所有本次变更的 Patch 文件,然后在需要更新框架代码的项目仓库中 Apply Patch,是不是就可以了?
    340244120
        11
    340244120  
       2018-01-31 09:59:54 +08:00
    @Eoss
    gitlab,gogs 等,仓库都有基本的读写权限管理
    atroy
        12
    atroy  
       2018-01-31 12:03:31 +08:00
    我这是新建一个分支,然后其他项目需要的话就用 cherry pick。
    micean
        13
    micean  
       2018-01-31 12:39:03 +08:00
    @Eoss
    不好意思我眼瞎了,我说的是 maven ……

    php 应该也有相应的依赖管理工具吧,负责从远程引入其他库,然后创建一个私有仓库,把框架更新到仓库里
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1038 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:26 · PVG 06:26 · LAX 14:26 · JFK 17:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.