一、本地安装步骤
第一步:环境配置
下载安装 ****spacecommander。在项目根目录下执行 path/to/spacecommander/setup-repo.sh。
执行上述的指令后后,根目录中.git/hooks隐藏目录下会多出 pre-commit文件,且根目录会出现一个.clang-format的隐形文件,注意如果.clang-format是副本或者是软链接文件,请复制spacecommander目录的.clang-format替换它
副本文件如下:不可以使用❌
正文本文件如下:可以
第二步:配置扫描目录和忽略扫描目录
创建.formatting-directory 中指定待格式化的目录。各发布分支根据实际情况配置,示例配置如下:
./xxxx1/xxxx2/xxx3
./xxxx1/xxxx2/xxx3
创建.formatting-directory-ignore 中指定无需格式化的目录。各发布分支根据实际情况配置,示例配置如下:
./xxxx1/xxxx2/xxx3
./xxxx1/xxxx2/xxx3
注意:配置文件里的每一项都需要换行隔开,两个文件名不能改,如果需要改的话,您需要修改spacecommander项目的代码实现逻辑。
第三步:执行测试
执行git commit 指令时自动检测不符合规范的代码并提示
如果一些文件想绕开格式化可以在git commit -m 'xxx' 后加 --no-verify
二、gitlab-ci配置自动格式化工作流
-
实现成果:
点击卡片可以直接跳转到gitlab的制定job详情里,有提示格式问题的代码和修复方式
-
配置步骤:
实现条件:
保证把.clang-format 、 .formatting-directory、.formatting-directory-ignore、.git目录都已提交至远程仓库
第一步:gitlab-ci.yml文件配置
#push触发
style-when-push:
stage: styleCheck
script: ./xxx.sh $CI_COMMIT_BEFORE_SHA $CI_PIPELINE_SOURCE $CI_PROJECT_NAME $GITLAB_USER_LOGIN $CI_JOB_URL $CI_COMMIT_BRANCH $CI_COMMIT_MESSAGE
tags:
- lab1
rules:
- if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BEFORE_SHA != "0000000000000000000000000000000000000000"
#mr触发
style-when-mr:
stage: styleCheck
script: ./.sh $CI_MERGE_REQUEST_DIFF_BASE_SHA $CI_PIPELINE_SOURCE $CI_PROJECT_NAME $GITLAB_USER_LOGIN $CI_JOB_URL $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME $CI_MERGE_REQUEST_TARGET_BRANCH_NAME $CI_COMMIT_MESSAGE
tags:
- lab1
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_DIFF_BASE_SHA
第二、第三步的生成文件至远程仓库
后语:
这里具体脚本感兴趣的小伙伴可以私聊我!