golang本地Git提交可视化工具插件gitcs的使用

Golang本地Git提交可视化工具插件gitcs的使用

gitcs简介

Git Commits Visualizer (gitcs) 是一个命令行工具,允许开发者分析本地Git仓库并生成可视化的贡献图表。这个工具对于在多个Git服务(如GitHub和GitLab)上工作的开发者很有价值,因为它可以本地工作,无论你将项目推送到哪里,提交都会被统计。

依赖项

  • Go
  • Git

安装

在安装此工具之前,请确保您的机器上已安装Go。执行以下命令:

go install github.com/knbr13/gitcs@latest

或者,如果您没有安装Go,可以从该仓库下载最新版本。

使用示例

基本用法

默认情况下,该工具会显示最近6个月的提交图表:

> gitcs -path "/home/user/dev"

指定邮箱

这些提交是由您的全局Git邮箱地址提交的,但您也可以使用-email标志显示另一个Git邮箱的提交:

> gitcs -email "email@example.com" -path "/home/user/dev"

自定义时间范围

默认情况下,该工具显示最近6个月的提交,但您可以使用sinceuntil标志配置:

> gitcs -since "2023-10-24" -until "2024-01-15" -path "/home/user/dev"

注意事项:

  • 如果您的机器上没有设置全局Git邮箱,则必须使用-email标志指定
  • sinceuntil标志不需要同时指定

贡献

欢迎贡献!如果您想为此项目做出贡献,请按照以下步骤操作:

  1. Fork仓库
  2. 为您的功能或错误修复创建一个新分支
  3. 进行必要的更改并提交
  4. 将更改推送到您的fork
  5. 提交一个描述您更改的pull request

许可证

该项目采用MIT许可证。有关详细信息,请参阅LICENSE文件。


更多关于golang本地Git提交可视化工具插件gitcs的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang本地Git提交可视化工具插件gitcs的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


GitCS - Golang本地Git提交可视化工具插件

GitCS是一个轻量级的Git提交可视化工具插件,专为Golang开发者设计,可以帮助你在本地更直观地查看和管理Git提交记录。

安装GitCS

go get github.com/gitcs/gitcs

基本功能

GitCS提供了以下核心功能:

  • 可视化展示本地Git提交记录
  • 分支和提交关系图
  • 提交详情查看
  • 简单的提交操作

使用示例

1. 初始化GitCS

package main

import (
	"fmt"
	"github.com/gitcs/gitcs"
	"os"
)

func main() {
	// 指定Git仓库路径
	repoPath := "./" // 当前目录

	// 初始化GitCS
	repo, err := gitcs.OpenRepository(repoPath)
	if err != nil {
		fmt.Printf("打开仓库失败: %v\n", err)
		os.Exit(1)
	}

	// 获取提交历史
	commits, err := repo.GetCommitHistory()
	if err != nil {
		fmt.Printf("获取提交历史失败: %v\n", err)
		os.Exit(1)
	}

	// 打印提交历史
	for _, commit := range commits {
		fmt.Printf("ID: %s\nAuthor: %s\nDate: %s\nMessage: %s\n\n", 
			commit.ID, commit.Author, commit.Date, commit.Message)
	}
}

2. 可视化展示提交历史

func visualizeCommits(repoPath string) {
	// 初始化GitCS可视化界面
	visualizer := gitcs.NewVisualizer(repoPath)
	
	// 设置显示选项
	visualizer.SetOptions(gitcs.VisualizerOptions{
		ShowBranchLabels: true,
		MaxDepth:         50,
		CompactMode:      false,
	})
	
	// 渲染提交图
	err := visualizer.Render()
	if err != nil {
		fmt.Printf("渲染提交图失败: %v\n", err)
		return
	}
	
	// 显示可视化界面
	visualizer.Show()
}

3. 交互式操作

func interactiveMode(repoPath string) {
	// 创建交互式终端界面
	ui := gitcs.NewTerminalUI(repoPath)
	
	// 设置UI主题
	ui.SetTheme(gitcs.DefaultTheme)
	
	// 运行交互式界面
	err := ui.Run()
	if err != nil {
		fmt.Printf("交互式界面运行失败: %v\n", err)
	}
}

高级功能

1. 自定义提交过滤器

func filterCommits(repoPath string) {
	repo, _ := gitcs.OpenRepository(repoPath)
	
	// 创建自定义过滤器
	filter := gitcs.CommitFilter{
		Author:    "john@example.com", // 按作者过滤
		Since:     "2023-01-01",       // 起始日期
		Until:     "2023-12-31",       // 结束日期
		Keyword:   "bugfix",           // 提交信息关键词
		MaxCount:  100,                // 最大数量
	}
	
	// 获取过滤后的提交
	filteredCommits, err := repo.FilterCommits(filter)
	if err != nil {
		fmt.Printf("过滤提交失败: %v\n", err)
		return
	}
	
	// 处理过滤结果
	for _, commit := range filteredCommits {
		fmt.Println(commit.Message)
	}
}

2. 生成提交统计报告

func generateReport(repoPath string) {
	repo, _ := gitcs.OpenRepository(repoPath)
	
	// 生成统计报告
	report := gitcs.NewCommitReport(repo)
	
	// 配置报告选项
	report.Options = gitcs.ReportOptions{
		GroupBy:      "author", // 按作者分组
		TimeRange:    "month",  // 按月统计
		ShowGraph:    true,     // 显示图表
		OutputFormat: "markdown", // 输出格式
	}
	
	// 生成报告内容
	content, err := report.Generate()
	if err != nil {
		fmt.Printf("生成报告失败: %v\n", err)
		return
	}
	
	// 保存报告到文件
	err = os.WriteFile("git_report.md", []byte(content), 0644)
	if err != nil {
		fmt.Printf("保存报告失败: %v\n", err)
		return
	}
	
	fmt.Println("报告已生成: git_report.md")
}

集成到现有项目

你可以轻松将GitCS集成到现有的Golang项目中:

package main

import (
	"github.com/gitcs/gitcs"
	"log"
)

type MyProject struct {
	repo *gitcs.Repository
}

func NewMyProject(path string) (*MyProject, error) {
	repo, err := gitcs.OpenRepository(path)
	if err != nil {
		return nil, err
	}
	return &MyProject{repo: repo}, nil
}

func (p *MyProject) ShowRecentCommits(count int) {
	commits, err := p.repo.GetCommitHistory(gitcs.WithMaxCount(count))
	if err != nil {
		log.Printf("获取提交历史失败: %v", err)
		return
	}
	
	for _, commit := range commits {
		log.Printf("%s: %s", commit.ID[:7], commit.Message)
	}
}

func main() {
	project, err := NewMyProject(".")
	if err != nil {
		log.Fatal(err)
	}
	
	project.ShowRecentCommits(5)
}

总结

GitCS为Golang开发者提供了一个简单而强大的本地Git提交可视化工具,通过上述示例代码,你可以快速集成和使用它的各种功能。无论是查看提交历史、分析代码变更,还是生成统计报告,GitCS都能帮助你更高效地管理代码版本。

你可以通过查看GitCS官方文档获取更多高级用法和配置选项。

回到顶部