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

2018-01-30 23:18:36 +08:00
 Eoss
小公司在开发适用自己的框架。然后会有多个项目基于该框架进行业务开发。

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

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


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

- 框架主动推送。即框架每次更新,同时推送到各项目中。
- 如果能主动推送,是否可以有选择性的推送?即功能 A 推给单个项目,功能 B 推给所有项目。
- 项目手动更新。即当项目有需要时,便从框架 git 仓库拉取代码来更新。
1602 次点击
所在节点    问与答
13 条回复
hljjhb
2018-01-30 23:22:03 +08:00
git submodule
brickyang
2018-01-30 23:28:51 +08:00
这不是 Git 要做的事吧?这应该是 CI/CD 的事。

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

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

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

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

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

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


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

php 应该也有相应的依赖管理工具吧,负责从远程引入其他库,然后创建一个私有仓库,把框架更新到仓库里

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/427258

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX