一般大厂应该怎样做 code review,如何组织 Git

2021-04-27 12:10:41 +08:00
 8e47e42
求有实战经验党讲讲:
1. Code Review 作为 Senior SE 的流程怎么做会比较能帮助到 junior SE ?如果一个 PR 有 bug/错误 /需要改进的地方,我要如何提出比较好。
2. 一般大厂的大家如何使用 git 协作?会直接在同个 code base 上协作(一个 git repo, 小组所有人有读 /写权限,遇到 feature 直接创建 branch,commit 到 repo,完成以后 PR 到 master/main ),还是通常会从主 repo 中 fork->创建一个 branch 写这个 feature->PR 回去
3. Commit 以什么方式组织( function ? class ?)最合适?

求各种细节
6556 次点击
所在节点    问与答
83 条回复
duhb
2021-04-28 06:42:36 +08:00
@cassyfar 他说的没问题,是你不懂而已。git 之所以快很大一部分就是因为全量 clone,多去看看 git pro
cassyfar
2021-04-28 07:10:14 +08:00
@duhb 我当然知道 git 是全量 clone 。但是一个 git repo 有 100G ?你知道 100G 的代码能有多少行吗?真有 100G,你知道要编译多久吗? Linux kernel 这种巨无霸才 100 多 M 。
ladypxy
2021-04-28 07:39:11 +08:00
@balabalaguguji 用 git 也可以做权限控制啊。你可以 commit,但是你无权 merge
duhb
2021-04-28 07:54:44 +08:00
@cassyfar 我不知道,我只知道上面那哥们说的 git 原理没有问题。一个项目的形成不是只有代码还有很多静态资源。所以 100G 的项目不是没有,只是你没见过,没见过还拒绝承认它的存在,这就是你的认知。
20015jjw
2021-04-28 07:57:24 +08:00
用 hg 的瑟瑟发抖
inhzus
2021-04-28 08:20:08 +08:00
1. 直接评论提出修改意见,直到全部修改通过才点通过
2. 从 master 拉出 feature 分支,各种环境用 release 分支(解决多个分支同时发布的问题)测试、发布,最后线上全量发布后自动合入 master
3. commit 无所谓,只要用 to #xxxx 的形式指明需求、任务的 id,大多数人完成一个小功能、或者一天的就 commit 一次,最后效能平台能从 commit 回溯到需求就可
zjsxwc
2021-04-28 08:21:11 +08:00
@ladypxy 他说的权限应该是更细化的权限,比如对项目里面某个文件、某个子目录是否可以访问的权限吧
zjsxwc
2021-04-28 08:33:17 +08:00
@zjsxwc 只能用 submodules 加内网 ip 网络访问控制,来实现类似对某个子目录读写权限。
zjsxwc
2021-04-28 08:46:20 +08:00
@zjsxwc

gitlab 这种可以对项目 private 来控制其用户是否项目可被读取可被克隆,所以 submodules 加上类似 gitlab 的 private 就能满足细化权限控制。
wangyzj
2021-04-28 09:12:44 +08:00
1. 你确定你会认真去 review 么?这一直是我的理想
2. gerrit 就不说了
gitlab 就 gitflow 就行
3. commit 以单个可用完整功能吧
hcen1997
2021-04-28 09:19:13 +08:00
感谢 @zjsxwc 提出了 gitlib 也有权限控制. 是的 是这样的, gitlib 有权限管理, 针对分支提交做权限控制
超级大厂, 内部的架构其实问不出来的, 因为大家入职都签了保密协议不是吗?

倒是有 google 的离职程序员介绍谷歌内部工具, 基本都是找开发满足 google 内部的需求(比如面对上亿行代码怎么快速查找, 上百个人项目组怎么交流信息.)
manami
2021-04-28 09:19:37 +08:00
My stupid boss still prefers SVN
hcen1997
2021-04-28 09:19:52 +08:00
开源又不是共产主义, 哪里那么简单
hcen1997
2021-04-28 09:23:05 +08:00
不好意思 53 楼的意思时 开源和开放信息获取不是一个意思
verzqli
2021-04-28 09:26:05 +08:00
@yhxx
MD 绝了 一摸一样
zjsxwc
2021-04-28 09:27:44 +08:00
@zjsxwc 轻量级的 gogs 也支持每个用户私有仓库。

所以 git 与 svn 没什么不同都能满足企业需求,区别是 svn 是全套,而 git 需要配合 gogs/gitlab 来用,

svn 按文件来比较直白,而 git 是按元数据整体管理。

svn 是集中式一整套系统,

而 git 抛开 gogs/gitlab 来说仅仅只是一个命令行工具,与 ls 这种命令没有区别,ssh 加 git 就变成了 git 服务器,linux 用户管理( chown,chmod )加 ssh 加 git 就变成了有各种用户读写权限管理的 git 版本管理系统。
balabalaguguji
2021-04-28 09:37:32 +08:00
@namelosw #31 很显然你没熟悉过 SVN,拖后腿这种话都说得出
balabalaguguji
2021-04-28 09:39:34 +08:00
@nvioue #29 这才是正确的认识。只是现在很多新人一开始就是学 Git 的,SVN 没怎么用过,然后就有了各种鄙视
balabalaguguji
2021-04-28 09:40:35 +08:00
@Jooooooooo #22 估计你是一开始就用 Git 的,SVN 没用过吧,不然怎么会问啥叫权限控制。
balabalaguguji
2021-04-28 09:41:49 +08:00
@huangsen365 #30 嗯,是的,不过太难了,一个项目要拆分成多个仓库,管理也麻烦

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

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

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

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

© 2021 V2EX