12 Commits

Author SHA1 Message Date
9743118378 feat(测试部署): 测试部署
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
continuous-integration/drone/tag Build is passing
2023-07-07 03:10:42 +08:00
d898a07ea9 feat(修正构建): 修正构建
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-07 03:06:15 +08:00
5a879147b9 chore(构建脚本): 更新构建脚本
Some checks reported errors
continuous-integration/drone/push Build encountered an error
continuous-integration/drone Build encountered an error
2023-07-07 02:52:03 +08:00
8aad2018ff feat(替换函数): 使用新函数替换废弃函数
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2023-02-23 23:16:01 +08:00
85015449ca Merge pull request #4 from dmokel/main
feat(all): add support for signing commit (#2)
2023-02-23 23:11:15 +08:00
36dcaa56a5 feat(all): add support for signing commit (#2) 2023-02-23 21:40:18 +08:00
8e203b7689 feat(编译目标): 切换到go1.19,预编译二进制添加龙芯支持
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-09 16:15:38 +08:00
8168b719fd style(代码风格): 调整风格
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-10 14:05:13 +08:00
d36f61bc80 feat(合并提交): 合并提交,log改fmt减少依赖
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-03-10 09:50:10 +08:00
b45c7a8e32 Merge pull request #3 from dmokel/main
feat(all): body breakingChange
2022-03-10 09:40:31 +08:00
55c015a566 feat(all): body breakingChange
add body breakingchange closes
2022-03-10 00:31:37 +08:00
00b8e2c4b6 chore(调整构建): 调整构建
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-22 10:19:24 +08:00
4 changed files with 95 additions and 28 deletions

View File

@ -2,19 +2,22 @@ kind: pipeline
type: docker
name: default
node:
region: cn
steps:
- name: generate
pull: if-not-exists
image: hkccr.ccs.tencentyun.com/xiaoqidun/build
image: ccr.ccs.tencentyun.com/xiaoqidun/build
commands:
- build -f build.sh -i gitcz.go -o release/gitcz
- name: build
pull: if-not-exists
image: xiaoqidun/goenv
image: ccr.ccs.tencentyun.com/xiaoqidun/goenv
commands:
- ./build.sh
- name: upload
image: xiaoqidun/gocos
image: ccr.ccs.tencentyun.com/xiaoqidun/gocos
settings:
secret_id:
from_secret: cos_secret_id

View File

@ -1,26 +1,38 @@
# gitcz
Golang版本Git Commitizencommit规范工具
Golang 版本 Git Commitizencommit 规范工具
# 快速安装
go install github.com/xiaoqidun/gitcz@latest
# 编译安装
```
git clone https://github.com/xiaoqidun/gitcz.git
cd gitcz
go build gitcz.go
```
# 手动安装
1. 根据系统架构下载为你编译好的[二进制文件](https://aite.xyz/product/gitcz/)
2. 将下载好的二进制文件重命名为gitcz并保留后缀
3. 把gitcz文件移动到系统PATH环境变量中的目录下
4. windows外的系统需使用chmod命令赋予可执行权限
2. 将下载好的二进制文件重命名为 gitcz 并保留后缀
3. gitcz 文件移动到系统 PATH 环境变量中的目录下
4. windows 外的系统需使用 chmod 命令赋予可执行权限
# 使用说明
```shell script
# 添加文件到本地仓库
git add .
# 使用-amend参数可覆盖最近一次提交信息等同于git commit --amend
# 使用-S参数可进行签署commit操作等同于git commit -S
gitcz
# 推送文件到远程仓库
git push
```
# 规范文档
gitcz使用[angular git commit规范](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines)
gitcz 使用:[angular git commit 规范](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines)

View File

@ -5,8 +5,6 @@ import (
"bytes"
"flag"
"fmt"
"io/ioutil"
"log"
"os"
"os/exec"
"strconv"
@ -19,19 +17,23 @@ type CzType struct {
}
type CzCommit struct {
Type *CzType
Scope *string
Subject *string
Body *string
Footer *string
Type *CzType
Scope *string
Subject *string
Body *string
BreakingChange *string
Closes *string
}
var StdinInput = bufio.NewReader(os.Stdin)
var (
InputTypePrompt = "选择或输入一个提交类型(必填): "
InputScopePrompt = "说明本次提交的影响范围(必填): "
InputSubjectPrompt = "对本次提交进行简短描述(必填): "
InputTypePrompt = "选择或输入一个提交类型(必填): "
InputScopePrompt = "说明本次提交的影响范围(必填): "
InputSubjectPrompt = "对本次提交进行简短描述(必填): "
InputBodyPrompt = "对本次提交进行完整描述(选填): "
InputBreakingChangePrompt = "如果当前代码版本与上一版本不兼容,对变动、变动的理由及迁移的方法进行描述(选填): "
InputClosesPrompt = "如果本次提交针对某个issue,列出关闭的issues(选填): "
)
var CzTypeList = []CzType{
@ -75,6 +77,7 @@ func main() {
false,
"覆盖上次提交信息",
)
sign := flag.Bool("S", false, "对commit进行签名")
author := flag.Bool(
"author",
false,
@ -89,9 +92,12 @@ func main() {
czCommit.Type = InputType()
czCommit.Scope = InputScope()
czCommit.Subject = InputSubject()
czCommit.Body = InputBody()
czCommit.BreakingChange = InputBreakingChange()
czCommit.Closes = InputCloses()
commit := GenerateCommit(czCommit)
if err := GitCommit(commit, *amend); err != nil {
log.Println(err)
if err := GitCommit(commit, *amend, *sign); err != nil {
fmt.Println(err)
}
}
@ -108,8 +114,8 @@ func NewLine() {
fmt.Println()
}
func GitCommit(commit string, amend bool) (err error) {
tempFile, err := ioutil.TempFile("", "git_commit_")
func GitCommit(commit string, amend bool, sign bool) (err error) {
tempFile, err := os.CreateTemp("", "git_commit_")
if err != nil {
return
}
@ -124,6 +130,9 @@ func GitCommit(commit string, amend bool) (err error) {
if amend {
args = append(args, "--amend")
}
if sign {
args = append(args, "-S")
}
args = append(args, "-F", tempFile.Name())
cmd := exec.Command("git", args...)
result, err := cmd.CombinedOutput()
@ -154,6 +163,7 @@ func InputType() *CzType {
return &CzTypeList[i]
}
}
NewLine()
return InputType()
}
@ -165,6 +175,7 @@ func InputScope() *string {
NewLine()
return &text
}
NewLine()
return InputScope()
}
@ -176,22 +187,63 @@ func InputSubject() *string {
NewLine()
return &text
}
return InputScope()
NewLine()
return InputSubject()
}
func InputBody() *string {
fmt.Print(InputBodyPrompt)
text, _ := StdinInput.ReadString('\n')
text = strings.TrimSpace(text)
if text != "" {
NewLine()
return &text
}
NewLine()
return nil
}
func InputBreakingChange() *string {
fmt.Print(InputBreakingChangePrompt)
text, _ := StdinInput.ReadString('\n')
text = strings.TrimSpace(text)
if text != "" {
NewLine()
return &text
}
NewLine()
return nil
}
func InputCloses() *string {
fmt.Print(InputClosesPrompt)
text, _ := StdinInput.ReadString('\n')
text = strings.TrimSpace(text)
if text != "" {
NewLine()
return &text
}
NewLine()
return nil
}
func GenerateCommit(czCommit *CzCommit) string {
commit := fmt.Sprintf(
"%s(%s): %s\n",
"%s(%s): %s\n\n",
czCommit.Type.Type,
*czCommit.Scope,
*czCommit.Subject,
)
if czCommit.Body != nil {
commit += *czCommit.Body
commit += "\n\n"
}
commit += "\n"
if czCommit.Footer != nil {
commit += *czCommit.Footer
if czCommit.BreakingChange != nil {
commit += "BREAKING CHANGE: " + *czCommit.BreakingChange
commit += "\n\n"
}
if czCommit.Closes != nil {
commit += "Closes fix " + *czCommit.Closes
}
return commit
}

2
go.mod
View File

@ -1,3 +1,3 @@
module github.com/xiaoqidun/gitcz
go 1.17
go 1.20