关于Gitlab Merge Request功能一件让人唏嘘的往事
🗣️糟糕的现状
一个功能在Gitlab社区前后讨论了8年多
才加上你敢相信?这个功能就是Gitlab的Merge Request
文件内容收起功能,你可能不会立即回想起我说的时什么,我用一张截图来说明下:
打开一个Merge Request,切换到Changes,当文件过多且部分文件内容收起时,在右侧会出现一个Expand all files
按钮,点击后会把所有的文件内容全部展开,然后按钮消失,且并不会出现一个可能叫Collapse all files
的按钮,这个时候再想收起文件内容怎么办呢?
对于使用了代码生成、更新了外部依赖的MR,恰好你的项目也会把vendor提交到仓库来加速构建,Review起来是非常痛苦的,你需要跳过这些文件,找到真正需要review的文件。
然而这几乎是不可能的,这里同时也带出另外一个问题,文件数足够多的时候,自带的file browser也就是左侧的文件树,是非常难用的,也不会让你快速定位到文件。
根据我个人经历,有时候会出现100+甚至200+个文件,根本无法在线review
🕰️漫长的演进历史
这个功能从第一次提出来,到用户各种自适应,前后经历了8年多,Insane.
- 2016年是我能找到的最早记录,当时有人希望增加一个收起全部文件的按钮:a "Collapse All" button,
- 接下来的8年多里,多个issue和MR都提到这个问题,但是都没有被满足
- 再后来有人写了油猴脚本来实现这个功能
- 再后来有人把油猴脚本的代码包装做成了一个Chrome扩展,来提高收起的性能
- ...
🧠方案和原因
如果Chrome扩展的源码你看不到,那可以参考油猴脚本的collapse-all-gitlab-diffs.user.js
文件,会发现其实就一行代码的事情,所以实现起来可能并没有那么复杂。
大概Gitla的资源都被用在了CI/CD、权限、SCM等新功能上了,这个功能的优先级实在是太低了,才导致一直没有实现。
✅ 最近进展
大约在2024年9月,Gitlab团队接受了用户的建议实现了这个功能,甚至很贴心的给这两个按钮附带了快捷键操作,最终这个功能大约伴随着17.4版本发布,下面是视频演示:
These buttons can also be triggered with hotkeys: ; and shift+; respectively.
其实这个最终实现也是社区用户整理汇总给出的方案:Collapse / Expand all diffs