【转载】一种git commit前自动格式化的方式

查看原文

简介

这个系列为了解决一个问题:自动化的去管理代码风格和格式

前提:Linux,C语言,Clang

如何在每次commit的时候,将代码风格自动格式化后再提交commit,且格式化的内容必须是本次commit中的内容。

这个需求看似很简单实现,但是做到后来我发现,要把这个需求做完美并没有这么容易

我将一步步的去尝试实现最完美的状态:

  • 自动格式化代码
  • 只格式化staged changes
  • 完整保留changes not staged现场
  • 漂亮的输出Clang干了啥

这里会大量的使用关于Bash脚本和Git的相关知识点

最终版使用方法

目录结构

我会提供一个cpt(c programing tools)的目录,这个目录会放入所有脚本及其依赖的工具,以及一个test工程

~/cpt
├── clang
├── .git_template
│   └── hooks
│       └── pre-commit
└── test_clang
    ├── .clang-format
    └── hello
        ├── main.c
        ├── test_math.c
        └── test_math.h
  • clang 使用的版本是 clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04
  • .git_template git模版及相关脚本目录
  • test_clang 测试工程

使用方法

集成包:cpt-1.00.tar.gz

#首先将工具解压缩
tar zxvf cpt-1.00.tar.gz
#移动到用户根目录
mv cpt ~
#配置git
git config --global init.templatedir ~/cpt/.git_template
#开始测试使用
cd ~/cpt/test_clang/hello
git init
git add .
git commit -m "init"
#故意将代码格式改错
git add .
git commit -m "test"

注意:如果你的项目已经用git管理,在完成上述步骤后,你只需要将~/cpt/.git_template/hooks/pre-commit文件复制到你对应项目中的.git/hooks目录中即可

cp ~/cpt/.git_template/hooks/pre-commit .git/hooks
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git Commit规范是一种约定俗成的方式,用于规范化提交信息的格式和内容,使得提交历史更加清晰、易读和易于管理。以下是一种常见的Git Commit规范: 1. 提交信息的结构:每个提交信息由三个部分组成:标题、正文和页脚。 标题:简明扼要地描述这次提交的内容,通常以动词开头,使用一般现在时,不超过50个字符。 正文:对提交的详细描述,可以包括为什么进行该提交、做了哪些修改等信息。 页脚:可包含与提交相关的其他附加信息,如关联的Issue编号、作者等。 2. 提交信息的格式:为了保持统一和易读性,可以采用以下格式: ``` <type>(<scope>): <subject> <body> <footer> ``` 其中,`<type>`代表提交的类型,如`feat`(新功能)、`fix`(修复bug)、`docs`(文档更新)等。 `<scope>`代表本次提交的范围,可以是具体的文件、模块或功能名称。 `<subject>`是对本次提交内容的简要描述。 `<body>`是对本次提交内容的详细描述。 `<footer>`是页脚部分,可以包含相关链接、引用等信息。 3. 示例: ``` feat(user): 添加用户注册功能 - 在用户界面增加注册表单 - 后端增加注册接口 Issue #123 ``` 通过遵循Git Commit规范,可以提高团队协作效率、减少沟通成本,并且更好地追踪和管理项目的提交历史。当然,具体的规范可以根据团队的实际需求和偏好进行调整和定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值