commitmate

package
v0.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 11, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Overview

Package commitmate: Advanced Git commit automation engine with intelligent Go formatting Features smart commit workflows with auto Go source code formatting and remote-based signature-info selection Provides seamless staging, formatting, committing, and amend operations with configuration-driven signatures Supports wildcard pattern matching on Git remote URLs to auto-select appropriate commit signatures

commitmate: 高级 Git 提交自动化引擎,带有智能 Go 格式化功能 具有智能提交工作流程,包含自动 Go 源代码格式化和基于远程的身份选择 提供无缝的暂存、格式化、提交和 amend 操作,支持配置驱动的签名 支持 Git 远程 URL 的通配符模式匹配,自动选择合适的提交签名

Package commitmate provides Git utility functions Contains functions to retrieve Git remote and config information

commitmate 包提供 Git 工具函数 包含获取 Git 远程和配置信息的函数

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DefaultAllowFormat

func DefaultAllowFormat(path string) bool

DefaultAllowFormat is the default check function in Go files formatting Skips common generated files like .pb.go, wire_gen.go, and ent files Returns true when the file needs formatting, false to skip

DefaultAllowFormat 是 Go 文件格式化的默认过滤函数 跳过常见的生成文件,如 .pb.go、wire_gen.go 和 ent 文件 当文件需要格式化时返回 true,跳过则返回 false

func FormatChangedGoFiles

func FormatChangedGoFiles(projectRoot string, client *gogit.Client, allowFormat func(path string) bool) error

FormatChangedGoFiles applies formatting to changed Go files Uses allowFormat function to determine which files get formatted Applies Go formatting to matching files and logs the process

FormatChangedGoFiles 对已改变的 Go 文件应用格式化 使用 allowFormat 函数确定哪些文件需要格式化 对匹配的文件应用 Go 格式化并记录过程

func GitCommit

func GitCommit(projectRoot string, commitFlags *CommitFlags) error

GitCommit performs the complete commit workflow with selective Go code formatting Stages all changes, formats Go files when needed, and creates commits as requested Returns error if some step in the commit process fails

执行完整的提交工作流程,可选的 Go 代码格式化 暂存所有更改,可选格式化 Go 文件,并创建或 amend 提交 如果提交过程中的某个步骤失败则返回错误

Types

type CommitConfig

type CommitConfig struct {
	Signatures []*SignatureConfig `json:"signatures"` // List of configured signatures // 配置的签名列表
}

CommitConfig represents the comprehensive configuration system for go-commit Contains intelligent signature mappings for automated Git commit operations Enables automatic signature selection based on Git remote URL pattern matching Supports scoring-based matching with wildcard patterns for enterprise and custom workflows

CommitConfig 代表 go-commit 应用的全面配置系统 包含用于自动化 Git 提交操作的智能签名映射 基于 Git 远程 URL 模式匹配实现自动签名选择 支持基于评分的通配符模式匹配,适用于企业和自定义工作流程

func GenerateConfigTemplate

func GenerateConfigTemplate(projectRoot string) *CommitConfig

GenerateConfigTemplate generates a configuration template based on current project Analyzes current Git remote URL and creates a suggested configuration template Provides starting configuration with placeholders in username and mailbox settings Outputs JSON template to stdout allowing simple copying and customization

GenerateConfigTemplate 为当前项目生成配置模板 分析当前 Git 远程 URL 并创建建议的配置模板 提供带有用户名和邮箱设置占位符的启动配置 将 JSON 模板输出到 stdout 以便复制和自定义

func LoadConfig

func LoadConfig(configPath string) *CommitConfig

LoadConfig loads the go-commit configuration from the specified file path Reads, validates, and parses the JSON configuration file with signature mappings Utilizes osmustexist for file validation and rese/must for robust error handling Returns complete loaded configuration suited for signature matching operations

LoadConfig 从指定文件路径加载 go-commit 配置 读取、验证并解析包含签名映射的 JSON 配置文件 使用 osmustexist 进行文件验证和 rese/must 进行强健的错误处理 返回完全加载的配置,准备进行签名匹配操作

func (*CommitConfig) MatchSignature

func (config *CommitConfig) MatchSignature(remoteURL string) *SignatureConfig

MatchSignature finds the best signature configuration for the specified remote URL Employs sophisticated pattern matching with wildcards and score-based ranking selection Evaluates all configured signature patterns and returns the highest-scoring match Returns the best matched signature or nil if no patterns match the remote URL

MatchSignature 为指定的远程 URL 找到最佳的签名配置 采用复杂的通配符模式匹配和基于评分的优先级选择 评估所有配置的签名模式并返回得分最高的匹配 返回最佳匹配的签名,如果没有模式匹配远程 URL 则返回 nil

func (*CommitConfig) ResolveSignature

func (config *CommitConfig) ResolveSignature(projectRoot string) *SignatureConfig

ResolveSignature resolves Git signature based on project repo remotes Extracts Git remote URLs and performs pattern-based signature matching Prioritizes 'origin' remote but falls back to first available remote for signature resolution Returns the best matched signature or nil if no suitable patterns match the remote configuration

ResolveSignature 基于项目仓库远程解析 Git 签名 提取 Git 远程 URL 并执行基于模式的签名匹配 优先使用 'origin' 远程,但在签名解析时回退到第一个可用远程 返回最佳匹配的签名,如果没有合适的模式匹配远程配置则返回 nil

type CommitFlags

type CommitFlags struct {
	Username string // Git account username // Git 账户用户名
	Message  string // Commit message content // 提交消息内容
	IsAmend  bool   // Enable amend mode on previous commit // 启用对上一次提交的 amend 模式
	IsForce  bool   // Force amend even if pushed to remote // 即使推送到远程也强制 amend
	Mailbox  string // Git account mailbox address // Git 账户邮箱地址
	NoCommit bool   // Stage changes without committing // 仅暂存更改而不提交
	FormatGo bool   // Format changed Go files before commit // 提交前格式化已改变的 Go 文件
	AutoSign bool   // Use Git config as fallback // 使用 Git 配置作为备选
}

CommitFlags represents the configuration in commit operations Contains options allowing customization of commit actions Supports amend mode, force operations, and selective Go formatting

CommitFlags 代表提交操作的配置 包含允许自定义提交行为的选项 支持 amend 模式、强制操作和选择性 Go 格式化

func (*CommitFlags) ApplyProjectConfig

func (f *CommitFlags) ApplyProjectConfig(projectRoot string, config *CommitConfig)

ApplyProjectConfig applies project-specific configuration to commit flags Resolves appropriate signature from config based on project remote URLs Auto-selects and applies the best matching signature configuration

ApplyProjectConfig 将项目特定配置应用到提交标志 基于项目远程 URL 从配置中解析合适的签名 自动选择并使用最佳匹配的签名配置

func (*CommitFlags) ApplySignature

func (f *CommitFlags) ApplySignature(signature *SignatureConfig)

ApplySignature applies signature configuration to flags Signature config values override existing flag values when signature fields have content

ApplySignature 将签名配置应用到标志 当签名字段有内容时,签名配置值会覆盖现有标志值

func (*CommitFlags) ValidateFlags

func (f *CommitFlags) ValidateFlags() []string

ValidateFlags performs basic validation on commit flags and returns warnings Checks to detect conflicts and missing required information Returns slice of warning messages about possible issues

ValidateFlags 对提交标志执行基本验证并返回警告 检查冲突和缺失的必需信息 返回关于可能问题的警告消息切片

type SignatureConfig

type SignatureConfig struct {
	Name           string   `json:"name"`           // Config name as reference // 配置名称用于引用
	Username       string   `json:"username"`       // Git username in commits // 用于提交的 Git 用户名
	Mailbox        string   `json:"mailbox"`        // Git mailbox in commits // 用于提交的 Git 邮箱
	RemotePatterns []string `json:"remotePatterns"` // Remote URL patterns (supports wildcards) // 远程 URL 模式(支持通配符)
}

SignatureConfig represents a Git signature configuration with advanced pattern matching Maps Git remote URL patterns to corresponding account username and mailbox settings Supports sophisticated wildcard matching with flexible remote pattern definitions Enables automatic signature-info switching based on repo remote configurations

SignatureConfig 代表具有高级模式匹配的 Git 签名配置 将 Git 远程 URL 模式映射到相应的账户用户名和邮箱设置 支持复杂的通配符匹配以实现灵活的远程模式定义 基于代码库远程配置实现自动身份切换

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL