
各位老司机在使用 golang 开发微服务的时候,假设一个微服务一个 gomod,那么在使用 git 管理源代码的时候,是一个 git 仓库下一个微服务,还是多个微服务放在同一个仓库下?
1 Mitt 2021-03-17 20:08:01 +08:00 一个微服务一个仓库,微服务之间是互相独立的 |
2 mcfog 2021-03-17 20:34:56 +08:00 via Android 多对多,仓库是多个,每个仓库下也可以有多个(互相关联的)微服务 |
3 huijiewei 2021-03-17 20:40:23 +08:00 git sub tree |
4 linvon 2021-03-17 21:12:13 +08:00 都可以。。。看服务间相关性吧,我们的代码太老导致重构完大量服务都是在一个仓库。但实际上还是建议能拉新仓库就拉新仓库,因为很有可能出现不同服务需要引用同一个三方库不同版本的问题 |
5 xuanbg 2021-03-17 21:51:29 +08:00 一个服务一个仓库 |
6 goxy 2021-03-17 23:09:02 +08:00 看维护的人力。我们小公司都在一个仓库里,然后不同目录。CI 、CD 不同 pipeline |
7 janxin 2021-03-17 23:09:23 +08:00 via iPhone 单体仓库的话建议只有一个 go mod |
8 Leigg 2021-03-17 23:31:51 +08:00 via Android 最好同在一个项目下,分目录就行了,要是分仓库,那公共代码的管理能累死。 |
9 kkbblzq 2021-03-17 23:41:47 +08:00 我觉得吧,如果连代码都拆不清楚,那还是别跟风整微服务了,所以我支持多仓库。 |
10 AngryPanda 2021-03-18 00:35:27 +08:00 via iPhone |
11 ifsclimbing 2021-03-18 00:55:15 +08:00 大公司都是 monorepo,比如 google,就是一个 repo 小公司,不复杂的话可以多个 |
12 cookgo OP 还是感觉用 gitlab 一个项目组里分不同的子工程这样编写维护更方便:) |
13 Visionhope 2021-03-18 09:19:22 +08:00 综合考虑吧, 楼上也说了很多优缺点. 我们公司就是准备从多个仓库迁移到一个仓库. |
14 dongtingyue 2021-03-18 09:57:14 +08:00 我是放一起,有些公用的可以提取出来。一个服务一个仓库感觉不是很方便。 https://github.com/zarte/minirpc |
15 rahuahua 2021-03-18 09:58:55 +08:00 说多个的你们服务是不是只有个位数~ |
16 Leigg 2021-03-18 11:56:18 +08:00 via Android @AngryPanda 就是这个方案的缺陷。 |
17 davidyanxw 2021-03-18 15:19:31 +08:00 支持多仓库。 单仓库的话,一个微服务发布,其他业务是不是也得同步更新? |
18 rapperx2 2021-03-18 16:31:29 +08:00 支持单仓库 |
19 sekfung 2021-04-02 11:13:05 +08:00 如果有权限要求,建议多仓库,比如不是该模块的开发人员,不允许修改提交。 git 跟 svn 的区别在于,git 原生没有 svn 那样可以针对目录级别的权限控制,当然理论上服务端可以写 git hook 做到,但是麻烦得多 |