g2log 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.git-user-log-config.json.example +15 -0
- package/CONFIG.md +155 -0
- package/PUBLISH.md +111 -0
- package/README.md +201 -0
- package/git-user-log.js +1817 -0
- package/install.js +52 -0
- package/package.json +39 -0
@@ -0,0 +1,15 @@
|
|
1
|
+
{
|
2
|
+
"api_key": "your-api-key-here",
|
3
|
+
"default_author": "张三",
|
4
|
+
"default_since": "yesterday",
|
5
|
+
"default_until": "today",
|
6
|
+
"model": "deepseek-chat",
|
7
|
+
"api_base_url": "https://api.deepseek.com",
|
8
|
+
"api_provider": "deepseek",
|
9
|
+
"repositories": {
|
10
|
+
"前端项目": "/path/to/frontend-project",
|
11
|
+
"后端项目": "/path/to/backend-project",
|
12
|
+
"移动端": "/path/to/mobile-app"
|
13
|
+
},
|
14
|
+
"prompt_template": "请根据下面的Git提交记录,用3-5句话简洁地总结一天的工作内容。\n\n以下是Git提交记录:\n\n{log_content}\n\n要求:\n1. 按项目和日期组织内容\n2. 每个项目每天的工作内容用3-5句话概括\n3. 使用清晰、专业但不晦涩的语言\n4. 突出重要的功能开发、问题修复和优化改进\n5. 适合放入工作日报的简洁描述\n6. 输出格式为:【日期】:\n 【项目名称1】-【工作内容概述】\n 【项目名称2】-【工作内容概述】\n7. 回复不要出现多余的内容,非必要不要用markdown格式"
|
15
|
+
}
|
package/CONFIG.md
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
# Git用户日志工具配置说明
|
2
|
+
|
3
|
+
Git用户日志工具支持通过配置文件来简化命令行参数输入,提高使用效率。配置文件默认保存在用户主目录下的 `.git-user-log-config.json`。
|
4
|
+
|
5
|
+
## 配置文件结构
|
6
|
+
|
7
|
+
配置文件采用JSON格式,包含以下主要配置项:
|
8
|
+
|
9
|
+
```json
|
10
|
+
{
|
11
|
+
"deepseek_api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
12
|
+
"default_author": "张三",
|
13
|
+
"default_since": "yesterday",
|
14
|
+
"default_until": "today",
|
15
|
+
"repositories": {
|
16
|
+
"前端": "/path/to/frontend-project",
|
17
|
+
"后端": "/path/to/backend-project"
|
18
|
+
},
|
19
|
+
"prompt_template": "请根据下面的Git提交记录,用3-5句话简洁地总结一天的工作内容。\n\n这些是{author}在{since}至{until}期间的Git提交记录:\n\n{log_content}\n\n..."
|
20
|
+
}
|
21
|
+
```
|
22
|
+
|
23
|
+
## 配置项说明
|
24
|
+
|
25
|
+
### API密钥设置
|
26
|
+
|
27
|
+
```json
|
28
|
+
"deepseek_api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
29
|
+
```
|
30
|
+
|
31
|
+
- 用于AI总结功能
|
32
|
+
- 从DeepSeek官网获取API密钥后填入
|
33
|
+
- 也可通过命令行设置:`git-user-log --set-api-key="YOUR_API_KEY"`
|
34
|
+
|
35
|
+
### 默认作者
|
36
|
+
|
37
|
+
```json
|
38
|
+
"default_author": "张三"
|
39
|
+
```
|
40
|
+
|
41
|
+
- 设置默认的Git提交作者名称
|
42
|
+
- 如果命令行不指定`--author`参数,将使用此默认值
|
43
|
+
- 也可通过命令行设置:`git-user-log --set-default-author="张三"`
|
44
|
+
|
45
|
+
### 默认时间范围
|
46
|
+
|
47
|
+
```json
|
48
|
+
"default_since": "yesterday",
|
49
|
+
"default_until": "today"
|
50
|
+
```
|
51
|
+
|
52
|
+
- 设置查询Git提交记录的默认时间范围
|
53
|
+
- 支持Git支持的各种时间格式:
|
54
|
+
- 具体日期:`2023-01-01`
|
55
|
+
- 相对日期:`1 week ago`, `yesterday`
|
56
|
+
- 特殊关键词:`today`, `last Monday`
|
57
|
+
- 也可通过命令行设置:`git-user-log --set-time-range --since="yesterday" --until="today"`
|
58
|
+
|
59
|
+
### 仓库配置
|
60
|
+
|
61
|
+
```json
|
62
|
+
"repositories": {
|
63
|
+
"前端": "/Users/username/Projects/frontend-project",
|
64
|
+
"后端": "/Users/username/Projects/backend-project",
|
65
|
+
"移动端": "/Users/username/Projects/mobile-app"
|
66
|
+
}
|
67
|
+
```
|
68
|
+
|
69
|
+
- 设置仓库路径别名,方便快速切换不同项目
|
70
|
+
- 键值对格式:`"别名": "完整路径"`
|
71
|
+
- 自动处理功能:当配置了多个仓库时,不指定`--repo`参数会自动处理所有仓库并汇总结果
|
72
|
+
- 使用方法:
|
73
|
+
- 处理所有仓库:`git-user-log --ai-summary`
|
74
|
+
- 指定单个仓库:`git-user-log --repo="前端" --ai-summary`
|
75
|
+
- 管理命令:
|
76
|
+
- 添加仓库:`git-user-log --add-repo="前端" --path="/path/to/frontend"`
|
77
|
+
- 删除仓库:`git-user-log --remove-repo="前端"`
|
78
|
+
- 查看所有:`git-user-log --list-repos"`
|
79
|
+
|
80
|
+
### AI提示词模板
|
81
|
+
|
82
|
+
```json
|
83
|
+
"prompt_template": "请根据下面的Git提交记录,用3-5句话简洁地总结一天的工作内容。\n\n这些是{author}在{since}至{until}期间的Git提交记录:\n\n{log_content}\n\n..."
|
84
|
+
```
|
85
|
+
|
86
|
+
- 自定义AI总结功能的提示词模板
|
87
|
+
- 支持的变量:
|
88
|
+
- `{author}`: 提交作者
|
89
|
+
- `{since}`: 起始日期
|
90
|
+
- `{until}`: 结束日期
|
91
|
+
- `{log_content}`: Git提交日志内容
|
92
|
+
- 设置方式:
|
93
|
+
- 通过配置文件直接设置
|
94
|
+
- 通过命令行从文件读取:`git-user-log --set-prompt-template="my-prompt.txt"`
|
95
|
+
|
96
|
+
## 配置优先级
|
97
|
+
|
98
|
+
1. 命令行参数具有最高优先级
|
99
|
+
2. 配置文件中的设置作为默认值
|
100
|
+
3. 如果都未指定,则部分参数会使用程序内置默认值
|
101
|
+
|
102
|
+
## 多仓库自动处理功能
|
103
|
+
|
104
|
+
当配置文件中设置了多个仓库,且运行命令时不指定`--repo`参数时,工具会:
|
105
|
+
|
106
|
+
1. 自动获取所有配置仓库的Git提交记录
|
107
|
+
2. 合并所有仓库的日志,并在每条记录前加上仓库标识
|
108
|
+
3. 如果使用`--ai-summary`,将所有仓库的日志一起发送给AI进行总结
|
109
|
+
4. 生成包含所有项目工作内容的统一总结
|
110
|
+
|
111
|
+
这个功能特别适合:
|
112
|
+
- 同时负责多个项目的开发人员
|
113
|
+
- 需要生成包含所有项目的每日工作总结
|
114
|
+
- 希望减少重复操作的场景
|
115
|
+
|
116
|
+
## 配置示例
|
117
|
+
|
118
|
+
### 基础配置示例
|
119
|
+
|
120
|
+
```json
|
121
|
+
{
|
122
|
+
"deepseek_api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
123
|
+
"default_author": "张三",
|
124
|
+
"default_since": "today",
|
125
|
+
"default_until": "today"
|
126
|
+
}
|
127
|
+
```
|
128
|
+
|
129
|
+
### 带多个仓库的完整配置
|
130
|
+
|
131
|
+
```json
|
132
|
+
{
|
133
|
+
"deepseek_api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
134
|
+
"default_author": "张三",
|
135
|
+
"default_since": "yesterday",
|
136
|
+
"default_until": "today",
|
137
|
+
"repositories": {
|
138
|
+
"前端": "/Users/username/Projects/frontend-project",
|
139
|
+
"后端": "/Users/username/Projects/backend-project",
|
140
|
+
"移动端": "/Users/username/Projects/mobile-app",
|
141
|
+
"文档": "/Users/username/Projects/documentation",
|
142
|
+
"工具": "/Users/username/Projects/tools"
|
143
|
+
},
|
144
|
+
"prompt_template": "请根据下面的Git提交记录,用3-5句话简洁地总结一天的工作内容。\n\n这些是{author}在{since}至{until}期间的Git提交记录:\n\n{log_content}\n\n要求:\n1. 按项目和日期组织内容\n2. 每个项目每天的工作内容用3-5句话概括\n3. 使用清晰、专业但不晦涩的语言"
|
145
|
+
}
|
146
|
+
```
|
147
|
+
|
148
|
+
## 使用技巧
|
149
|
+
|
150
|
+
1. 设置适合自己的默认作者和时间范围,可以直接使用`git-user-log --ai-summary`生成今日工作总结
|
151
|
+
2. 为经常使用的项目配置别名,避免每次输入完整路径
|
152
|
+
3. 可以按团队、项目类型等方式组织仓库别名,便于管理
|
153
|
+
4. 自定义AI提示词模板,使生成的工作总结更符合自己的风格和需求
|
154
|
+
5. 对于跨多个仓库工作的开发者,利用多仓库自动处理功能大幅提高效率
|
155
|
+
6. 建议保持API密钥的安全,不要将含有真实API密钥的配置文件提交到公共代码仓库
|
package/PUBLISH.md
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
# Git用户日志工具发布指南
|
2
|
+
|
3
|
+
本文档提供了将Git用户日志工具发布到npm的步骤。
|
4
|
+
|
5
|
+
## 准备工作
|
6
|
+
|
7
|
+
1. 确保你有一个npm账号,如果没有,请在[npmjs.com](https://www.npmjs.com)注册
|
8
|
+
|
9
|
+
2. 登录到npm:
|
10
|
+
```bash
|
11
|
+
npm login
|
12
|
+
```
|
13
|
+
|
14
|
+
3. 更新package.json中的以下字段:
|
15
|
+
- `version`: 每次发布前增加版本号
|
16
|
+
- `author`: 填写你的名字和邮箱
|
17
|
+
- `repository.url`: 更新为你的GitHub仓库地址
|
18
|
+
- `bugs.url`: 更新为你的GitHub仓库issues地址
|
19
|
+
- `homepage`: 更新为你的GitHub仓库主页
|
20
|
+
|
21
|
+
## 发布步骤
|
22
|
+
|
23
|
+
1. 确保所有代码变更已提交并推送到GitHub
|
24
|
+
|
25
|
+
2. 确保所有文件都有正确的执行权限:
|
26
|
+
```bash
|
27
|
+
chmod +x git-user-log.js
|
28
|
+
chmod +x install.js
|
29
|
+
```
|
30
|
+
|
31
|
+
3. 检查是否所有必要的文件都会被包含在发布中:
|
32
|
+
```bash
|
33
|
+
npm pack
|
34
|
+
```
|
35
|
+
这将创建一个tar包而不实际发布。检查生成的.tgz文件内容,确保包含所有必要的文件,并且没有不需要的文件。
|
36
|
+
|
37
|
+
4. 选择版本更新类型并发布:
|
38
|
+
```bash
|
39
|
+
# 补丁版本更新 (修复bug等小变更)
|
40
|
+
npm version patch
|
41
|
+
|
42
|
+
# 次要版本更新 (添加新功能,但向后兼容)
|
43
|
+
npm version minor
|
44
|
+
|
45
|
+
# 主要版本更新 (重大变更,可能不向后兼容)
|
46
|
+
npm version major
|
47
|
+
```
|
48
|
+
|
49
|
+
5. 发布到npm:
|
50
|
+
```bash
|
51
|
+
npm publish
|
52
|
+
```
|
53
|
+
|
54
|
+
发布成功后,用户可以通过以下方式使用:
|
55
|
+
- 全局安装: `npm install -g g2log`
|
56
|
+
- 直接运行: `npx g2log [选项]`
|
57
|
+
|
58
|
+
6. 发布成功后,为该版本创建一个GitHub release:
|
59
|
+
```bash
|
60
|
+
git push --tags
|
61
|
+
```
|
62
|
+
然后在GitHub上创建对应的release。
|
63
|
+
|
64
|
+
## 更新已发布的包
|
65
|
+
|
66
|
+
1. 进行代码修改
|
67
|
+
|
68
|
+
2. 更新版本号:
|
69
|
+
```bash
|
70
|
+
npm version patch # 或minor或major
|
71
|
+
```
|
72
|
+
|
73
|
+
3. 再次发布:
|
74
|
+
```bash
|
75
|
+
npm publish
|
76
|
+
```
|
77
|
+
|
78
|
+
## 撤回发布
|
79
|
+
|
80
|
+
如果发现发布的版本有严重问题,可以在发布后24小时内撤回:
|
81
|
+
|
82
|
+
```bash
|
83
|
+
npm unpublish g2log@x.y.z # 替换x.y.z为要撤回的版本号
|
84
|
+
```
|
85
|
+
|
86
|
+
## 本地测试
|
87
|
+
|
88
|
+
在正式发布前,可以使用以下命令进行本地测试:
|
89
|
+
|
90
|
+
```bash
|
91
|
+
# 在本地创建全局链接
|
92
|
+
./local-install.sh
|
93
|
+
|
94
|
+
# 测试命令
|
95
|
+
g2log --help
|
96
|
+
|
97
|
+
# 完成测试后,移除本地链接
|
98
|
+
npm unlink g2log
|
99
|
+
```
|
100
|
+
|
101
|
+
## NPX测试
|
102
|
+
|
103
|
+
发布前测试npx调用:
|
104
|
+
|
105
|
+
```bash
|
106
|
+
# 先打包但不发布
|
107
|
+
npm pack
|
108
|
+
|
109
|
+
# 使用本地包进行测试
|
110
|
+
npx -p ./g2log-x.y.z.tgz g2log --help
|
111
|
+
```
|
package/README.md
ADDED
@@ -0,0 +1,201 @@
|
|
1
|
+
# Git 用户日志工具
|
2
|
+
|
3
|
+
这是一个基于 Node.js 开发的命令行工具,用于获取指定用户在特定时间范围内的 Git 提交记录,并通过 AI 自动生成工作总结。
|
4
|
+
|
5
|
+
## 功能特点
|
6
|
+
|
7
|
+
- 🔍 自动从配置文件读取用户信息和仓库路径
|
8
|
+
- 📅 支持灵活的时间范围过滤
|
9
|
+
- 🎨 彩色命令行输出提升可读性
|
10
|
+
- 📁 支持将结果导出到文件
|
11
|
+
- 🔄 进度显示和友好的用户界面
|
12
|
+
- 🤖 自动生成3-5句话的工作总结
|
13
|
+
- ⚙️ 支持配置文件设置默认参数和多仓库别名
|
14
|
+
- 🌊 支持流式输出AI响应,实时查看生成过程
|
15
|
+
- 🔌 支持多种AI提供商API(OpenAI, DeepSeek)
|
16
|
+
- 🚀 支持通过npx直接运行,无需安装
|
17
|
+
|
18
|
+
## 安装与使用
|
19
|
+
|
20
|
+
### 通过 NPX 直接运行(无需安装)
|
21
|
+
|
22
|
+
```bash
|
23
|
+
npx g2log [选项]
|
24
|
+
```
|
25
|
+
|
26
|
+
### 全局安装(推荐长期使用)
|
27
|
+
|
28
|
+
```bash
|
29
|
+
npm install -g g2log
|
30
|
+
```
|
31
|
+
|
32
|
+
然后使用:
|
33
|
+
|
34
|
+
```bash
|
35
|
+
g2log [选项]
|
36
|
+
```
|
37
|
+
|
38
|
+
或者:
|
39
|
+
|
40
|
+
```bash
|
41
|
+
# 从本地目录全局安装
|
42
|
+
git clone https://github.com/yourusername/git-user-log.git
|
43
|
+
cd git-user-log
|
44
|
+
npm install -g
|
45
|
+
```
|
46
|
+
|
47
|
+
### 临时使用
|
48
|
+
|
49
|
+
无需安装,直接使用 Node.js 运行脚本:
|
50
|
+
|
51
|
+
```bash
|
52
|
+
node git-user-log.js
|
53
|
+
```
|
54
|
+
|
55
|
+
## 使用方法
|
56
|
+
|
57
|
+
```bash
|
58
|
+
g2log [--since="2023-01-01"] [--until="2023-12-31"] [选项]
|
59
|
+
```
|
60
|
+
|
61
|
+
或通过npx直接运行:
|
62
|
+
|
63
|
+
```bash
|
64
|
+
npx g2log [--since="2023-01-01"] [--until="2023-12-31"] [选项]
|
65
|
+
```
|
66
|
+
|
67
|
+
### 命令行参数
|
68
|
+
|
69
|
+
- `--since="YYYY-MM-DD"` - 起始日期(如未指定,使用配置中的默认值)
|
70
|
+
- `--until="YYYY-MM-DD"` - 结束日期(如未指定,使用配置中的默认值)
|
71
|
+
- `--local` - 使用本地仓库,忽略配置文件中的仓库设置
|
72
|
+
- `--output="文件路径"` - 将输出保存到指定文件
|
73
|
+
|
74
|
+
### 配置管理命令
|
75
|
+
|
76
|
+
- `--set-api-key="KEY"` - 设置API密钥
|
77
|
+
- `--set-ai-model="MODEL"` - 设置AI模型(默认: deepseek-chat)
|
78
|
+
- `--set-api-provider="PROVIDER"` - 设置API提供商(deepseek或openai)
|
79
|
+
- `--set-api-url="URL"` - 设置API基础URL
|
80
|
+
- `--set-default-author="NAME"` - 设置默认作者
|
81
|
+
- `--set-time-range --since="DATE" --until="DATE"` - 设置默认时间范围
|
82
|
+
- `--add-repo="ALIAS" --path="/path/to/repo"` - 添加仓库配置
|
83
|
+
- `--remove-repo="ALIAS"` - 删除仓库配置
|
84
|
+
- `--list-repos` - 列出所有配置的仓库
|
85
|
+
- `--set-prompt-template="file.txt"` - 从文件设置AI总结的prompt模板
|
86
|
+
- `--reset-prompt-template` - 重置AI总结的prompt模板为默认值
|
87
|
+
- `--fix-config` - 修复配置文件格式问题
|
88
|
+
- `--help` - 显示帮助信息
|
89
|
+
|
90
|
+
### 配置文件
|
91
|
+
|
92
|
+
配置文件保存在用户主目录下的 `.git-user-log-config.json`,包含以下内容:
|
93
|
+
|
94
|
+
```json
|
95
|
+
{
|
96
|
+
"api_key": "your-api-key-here",
|
97
|
+
"default_author": "张三",
|
98
|
+
"default_since": "today",
|
99
|
+
"default_until": "today",
|
100
|
+
"model": "deepseek-chat",
|
101
|
+
"api_base_url": "https://api.deepseek.com",
|
102
|
+
"api_provider": "deepseek",
|
103
|
+
"repositories": {
|
104
|
+
"前端": "/path/to/frontend-project",
|
105
|
+
"后端": "/path/to/backend-project"
|
106
|
+
},
|
107
|
+
"prompt_template": "请根据下面的Git提交记录,用3-5句话简洁地总结一天的工作内容..."
|
108
|
+
}
|
109
|
+
```
|
110
|
+
|
111
|
+
## 配置优先级
|
112
|
+
|
113
|
+
1. 命令行参数优先级最高(仅支持时间范围参数)
|
114
|
+
2. 配置文件中的设置作为默认值
|
115
|
+
3. 内置默认值作为最低优先级
|
116
|
+
|
117
|
+
## 示例
|
118
|
+
|
119
|
+
```bash
|
120
|
+
# 使用配置的默认值生成今日工作总结
|
121
|
+
g2log
|
122
|
+
|
123
|
+
# 指定时间范围
|
124
|
+
g2log --since="2023-01-01" --until="2023-12-31"
|
125
|
+
|
126
|
+
# 使用本地仓库
|
127
|
+
g2log --local
|
128
|
+
|
129
|
+
# 保存结果到文件
|
130
|
+
g2log --output="today-summary.md"
|
131
|
+
|
132
|
+
# 设置配置
|
133
|
+
g2log --set-default-author="张三"
|
134
|
+
g2log --set-ai-model="gpt-3.5-turbo"
|
135
|
+
g2log --set-api-provider="openai"
|
136
|
+
g2log --set-api-url="https://api.openai.com"
|
137
|
+
g2log --add-repo="前端" --path="/path/to/frontend-project"
|
138
|
+
```
|
139
|
+
|
140
|
+
## 日期格式
|
141
|
+
|
142
|
+
支持 Git 的日期格式,例如:
|
143
|
+
|
144
|
+
- 具体日期:`2023-01-01`
|
145
|
+
- 相对日期:`1 month ago`, `last week`, `yesterday`
|
146
|
+
- 特殊关键词:`now`, `today`, `last Monday`
|
147
|
+
|
148
|
+
## 多仓库自动处理功能
|
149
|
+
|
150
|
+
工具默认会处理配置文件中的所有仓库:
|
151
|
+
|
152
|
+
1. 自动获取所有配置仓库的Git提交记录
|
153
|
+
2. 合并所有仓库的日志,并在每条记录前加上仓库标识
|
154
|
+
3. 将所有仓库的日志一起发送给AI进行总结
|
155
|
+
4. 生成包含所有项目工作内容的统一总结
|
156
|
+
|
157
|
+
如果希望仅处理本地仓库,可以使用 `--local` 参数。
|
158
|
+
|
159
|
+
## 注意事项
|
160
|
+
|
161
|
+
- 确保已安装 Git 并可在命令行中使用
|
162
|
+
- 确保配置文件中有正确的作者名称和仓库路径
|
163
|
+
- 使用AI总结功能需要有效的DeepSeek API密钥
|
164
|
+
- 配置文件保存在用户主目录下的 `.git-user-log-config.json` 文件中
|
165
|
+
|
166
|
+
## 问题反馈
|
167
|
+
|
168
|
+
如果遇到任何问题或有改进建议,请提交 issue 或联系开发者。
|
169
|
+
|
170
|
+
## 许可证
|
171
|
+
|
172
|
+
MIT
|
173
|
+
|
174
|
+
## AI提供商支持
|
175
|
+
|
176
|
+
工具支持多种AI提供商的API:
|
177
|
+
|
178
|
+
1. **DeepSeek API (默认)**
|
179
|
+
- 基础URL: https://api.deepseek.com
|
180
|
+
- 推荐模型: deepseek-chat
|
181
|
+
|
182
|
+
2. **OpenAI API**
|
183
|
+
- 基础URL: https://api.openai.com
|
184
|
+
- 推荐模型: gpt-3.5-turbo, gpt-4
|
185
|
+
|
186
|
+
切换提供商示例:
|
187
|
+
```bash
|
188
|
+
# 切换到OpenAI
|
189
|
+
g2log --set-api-provider="openai"
|
190
|
+
g2log --set-api-url="https://api.openai.com"
|
191
|
+
g2log --set-ai-model="gpt-3.5-turbo"
|
192
|
+
|
193
|
+
# 切换回DeepSeek
|
194
|
+
g2log --set-api-provider="deepseek"
|
195
|
+
g2log --set-api-url="https://api.deepseek.com"
|
196
|
+
g2log --set-ai-model="deepseek-chat"
|
197
|
+
```
|
198
|
+
|
199
|
+
## 流式输出
|
200
|
+
|
201
|
+
当使用OpenAI API时,工具会启用流式输出功能,让您能够实时看到AI生成内容的过程,无需等待整个响应完成。这提供了更好的用户体验,特别是当处理大量提交记录时。
|