V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Redjue
V2EX  ›  Visual Studio Code

Git-commit-plugin For Vscode 一款自动生成规范 git 提交信息的插件

  •  
  •   Redjue ·
    RedJue · 2020-03-19 21:47:12 +08:00 · 5993 次点击
    这是一个创建于 1708 天前的主题,其中的信息可能已经有所发展或是发生改变。

    初衷

    在公司由于大家随意提交 git-commit 的信息,导致提交的风格千奇百怪,写的信息不明确,不知道这次提交具体是修复 bug 呢?还是增加新功能,还是单纯改了一些配置文件,亦或是重构了一些不好的代码。只能靠大家自己去猜测,就算是自己提交的信息,也可能因为时间长导致自己也不清楚具体这次提交是为了干啥,只能去提交记录里翻代码,长此以往,不利于产品的迭代,以及对于 bug 的定位。

    为什么写这个插件

    基于这个原因,我们开始寻找比较符合规范的提交格式,Angular 团队的 Angular Team Commit Specification 进入了我们的视野,格式如下:

    <type>(<scope>): <subject>
    <BLANK LINE>
    <body>
    <BLANK LINE>
    <footer>
    

    清晰的信息展现,让我们觉得这个就是我们正在寻找的!为此我们开始搜IDE 有没有对应的插件可以使用,幸运的是后端 Java 团队使用的 IDEA 直接就有现成的插件可以使用,苦逼的我们前端团队都是统一用的 Vscode ,看到了几款插件,但是都不符合我们的要求,为了前端团队不拖后腿,于是乎就想着自己写一款符合要求的插件来供团队使用。

    如何使用

    1. 首先我们需要去 Vscode 插件市场搜索git-commit-plugin 并且进行安装。
    2. 安装完之后可以使用组合键 Command + Shift + P 呼出 指令行,并键入指令 show git commit template 或者点击 git 插件栏上的小图标唤醒插件界面。 open.gif
    3. 根据自己当前提交所要表达的意义,选择对应的 type 类型去编写 commit 信息 edit.gif

    结语

    写插件的时候也踩了不少坑,官网文档为了找个 API 也是看这看那的,不过最终解决了问题也是值得的。如果觉得本项目对你有帮助的,别吝啬你手里的✨给 本项目 点个 star✨,您的鼓励就是对作者最大的支持!发现 bug 或者有啥希望改进的点,也欢迎在项目底下提 issue 😘。

    第 1 条附言  ·  2020-03-30 22:01:28 +08:00

    2020年3月30日更新

    社区提了很多好的issue,也提了不少 PR ,有修复bug的,也有一些希望加入的功能的,在这次0.0.4版本的更新里都实现和解决了!

    更新内容

    ✨Feat

    • GitCommitPlugin.ShowEmoji: 支持可配置是否需要 Emoji前缀,默认为true
      GitCommitPlugin.ShowEmoji:true 
      
    • GitCommitPlugin.CustomCommitType: 支持自定义的Commit Type 前缀,默认为null
      GitCommitPlugin.CustomCommitType:[
        "customTypeName"
      ] 
      
    • GitCommitPlugin.MaxSubjectWords: 支持修改Subject的最大字数,默认为20
      GitCommitPlugin.MaxSubjectWords:20
      

    🐞Bug Fix

    28 条回复    2020-03-23 22:22:05 +08:00
    labulaka521
        1
    labulaka521  
       2020-03-19 23:51:13 +08:00 via Android
    learningman
        2
    learningman  
       2020-03-20 00:20:16 +08:00 via Android
    试试能不能迁移到 clion
    yeze322
        3
    yeze322  
       2020-03-20 00:22:18 +08:00
    可以!很好用!
    Redjue
        4
    Redjue  
    OP
       2020-03-20 07:36:03 +08:00   ❤️ 1
    @learningman IDEA 有类似的插件的
    Redjue
        5
    Redjue  
    OP
       2020-03-20 07:37:02 +08:00
    @labulaka521 谢谢🤗
    Redjue
        6
    Redjue  
    OP
       2020-03-20 07:37:40 +08:00
    @yeze322 希望对你有帮助🤝
    vincentxue
        7
    vincentxue  
       2020-03-20 08:12:55 +08:00
    https://github.com/RedJue/git-commit-plugin

    我眼瞎,黑暗模式下找了半天才看到链接文字。直接上链接吧。
    Redjue
        8
    Redjue  
    OP
       2020-03-20 08:18:33 +08:00
    @vincentxue 忘了 V2EX 还支持暗黑模式了,Thanks♪(・ω・)ノ
    creanme
        9
    creanme  
       2020-03-20 08:37:23 +08:00
    你 config 文件夹下面的代码都是 2 格缩进,extension.ts 是 4 格缩进
    Redjue
        10
    Redjue  
    OP
       2020-03-20 08:44:10 +08:00
    @creanme 被你发现了😂
    YoRolling
        11
    YoRolling  
       2020-03-20 12:25:26 +08:00
    花里胡哨的,我们的 commit message 贼多 commit、提交之类的。简直不要太随意
    Redjue
        12
    Redjue  
    OP
       2020-03-20 12:27:10 +08:00
    @YoRolling 主要是个规范约束,当然不同团队有不同的看法,选自己合适的就可以
    hantsy
        13
    hantsy  
       2020-03-20 12:36:00 +08:00
    @YoRolling 有信息就不错,最可怕就是 123 之类的。
    hantsy
        14
    hantsy  
       2020-03-20 12:36:51 +08:00
    这个不知道是 VSCode 的 Git 提交是能不能使用模板?
    YoRolling
        15
    YoRolling  
       2020-03-20 12:37:14 +08:00
    @Redjue 并没有吐槽你的这个 repo 的意思。我自己也有自己的提交格式,从 ng team 的规范里按自己的实际情况做了精简。

    这玩意儿还是得靠人呐,有规范有工具都是其次,最主要还是得执行下去。
    YoRolling
        16
    YoRolling  
       2020-03-20 12:40:26 +08:00
    @hantsy 不,和 123 差不多,因为 commit message 就是 commit 这种毫无意义的信息
    Redjue
        17
    Redjue  
    OP
       2020-03-20 12:56:58 +08:00
    @YoRolling 有工具会有点约束力,不然都随便提交了😂
    hantsy
        18
    hantsy  
       2020-03-20 12:59:52 +08:00
    国内太难执行,5,6 年前我还在参与一个上海创业项目,想按最简单的 Github Flow 提交代码都做不下去。大家习惯把时间花 SVN 那样天天解决冲突。
    Redjue
        19
    Redjue  
    OP
       2020-03-20 13:07:44 +08:00
    @hantsy 这种只能靠自觉,大部分团队也没办法做到强制,国内大环境就是这样
    hantsy
        20
    hantsy  
       2020-03-20 13:19:55 +08:00
    @Redjue 如果这种基本的规范约束都做不到,堆出来的代码可想而知。
    yeze322
        21
    yeze322  
       2020-03-20 14:05:35 +08:00
    国内企业为人员素质问题绝对推行不下去,爱咋搞咋搞吧,没救的。
    大部分项目确实不需要这种 commit log 级别的约束,很可能自己的模块都没划分清楚,项目没几个月就凉了。
    然而每一个规范的工程团队以及 open source world,都需要对 commit history 有一定的约束。这是对自己负责,也是对后续维护者、阅读者的负责。可惜大多数人还没有无私 /负责到这种程度。
    libery
        22
    libery  
       2020-03-20 14:09:42 +08:00
    直接用 gith hook 做强制检查
    Redjue
        23
    Redjue  
    OP
       2020-03-20 14:12:55 +08:00
    @yeze322 嗯,约束不了别人就约束自己,至少让自己的代码尽量符合规范
    Rwing
        24
    Rwing  
       2020-03-20 14:14:17 +08:00
    szzhiyang
        25
    szzhiyang  
       2020-03-20 14:14:24 +08:00
    @Redjue 建议加上「提交前格式化所有代码」的功能。
    Redjue
        26
    Redjue  
    OP
       2020-03-20 15:47:28 +08:00
    @szzhiyang 代码格式的规范,每个团队都不太一样,还是各自按照 eslint 来配置吧
    cireric
        27
    cireric  
       2020-03-23 20:57:23 +08:00
    @Redjue 阮一峰大神曾经写过一篇 Commit message 的 blog 可以参考一下,他有推荐一个撰写 commit message 工具
    https://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html

    当然,自己造最适合的轮子,有 DIY 精神是非常好的事。。
    Redjue
        28
    Redjue  
    OP
       2020-03-23 22:22:05 +08:00
    @cireric 哈哈 谢谢提醒!这个我倒真没想着去找一下阮一峰的 blog,早看到可能对我来说更有帮助,他讲解的很详细,很具有参考价值!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   985 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:44 · PVG 04:44 · LAX 12:44 · JFK 15:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.