wukong-gitlog-cli 1.0.39 → 1.0.41
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/.eslintrc +1 -0
- package/.prettierrc +2 -1
- package/CHANGELOG.md +97 -0
- package/README.md +97 -172
- package/README.zh-CN.md +88 -137
- package/bin/wukong-gitlog-cli +0 -0
- package/doc//347/233/256/345/275/225/347/273/223/346/236/204.md +2871 -0
- package/package.json +32 -29
- package/rc/.wukonggitlogrc +53 -0
- package/scripts/compareHourlyCounts.mjs +42 -0
- package/scripts/compareLatest.mjs +106 -0
- package/src/app/analyzeAction.mjs +120 -0
- package/src/app/exportAction.mjs +215 -0
- package/src/app/exportActionProgress.mjs +37 -0
- package/src/app/helpers.mjs +292 -0
- package/src/app/initAction.mjs +110 -0
- package/src/app/initActionWithTemp.mjs +192 -0
- package/src/app/journalAction.mjs +117 -0
- package/src/app/overtimeAction.mjs +100 -0
- package/src/app/runProfileEnd.mjs +0 -0
- package/src/app/serveAction.mjs +73 -0
- package/src/app/versionAction.mjs +7 -0
- package/src/cli/defineOptions.mjs +209 -0
- package/src/cli/index.mjs +0 -0
- package/src/cli/parseOptions.mjs +126 -8
- package/src/constants/index.mjs +16 -2
- package/src/domain/author/analyze.mjs +6 -0
- package/src/domain/author/map.mjs +0 -0
- package/src/domain/export/exportAuthor.mjs +28 -0
- package/src/domain/export/exportAuthorChanges.mjs +27 -0
- package/src/domain/export/exportAuthorChangesJson.mjs +31 -0
- package/src/domain/export/exportByMonth.mjs +157 -0
- package/src/domain/export/exportByWeek.mjs +121 -0
- package/src/domain/export/exportCommits.mjs +26 -0
- package/src/domain/export/exportCommitsExcel.mjs +45 -0
- package/src/domain/export/exportCommitsJson.mjs +31 -0
- package/src/domain/export/index.mjs +91 -0
- package/src/domain/git/ensureGitAvailable.mjs +66 -0
- package/src/domain/git/ensureGitRepo.mjs +41 -0
- package/src/domain/git/getGitFeatures.mjs +59 -0
- package/src/domain/git/getGitLogs.mjs +326 -0
- package/src/domain/git/getGitUser.mjs +44 -0
- package/src/domain/git/getRepoRoot.mjs +32 -0
- package/src/domain/git/gitCapability.mjs +119 -0
- package/src/domain/git/index.mjs +96 -0
- package/src/domain/git/resolveGerrit.mjs +102 -0
- package/src/domain/overtime/analyze.mjs +48 -0
- package/src/domain/overtime/index.mjs +3 -0
- package/src/domain/overtime/perPeriod.mjs +15 -0
- package/src/domain/overtime/render.mjs +15 -0
- package/src/i18n/index.mjs +38 -0
- package/src/i18n/resources.mjs +252 -0
- package/src/index.mjs +132 -649
- package/src/infra/cache.mjs +0 -0
- package/src/infra/configStore.mjs +128 -0
- package/src/infra/fs.mjs +0 -0
- package/src/infra/path.mjs +0 -0
- package/src/output/csv/overtime.mjs +12 -0
- package/src/output/csv.mjs +0 -0
- package/src/output/data/readData.mjs +54 -0
- package/src/output/data/writeData.mjs +145 -0
- package/src/output/excel/commits.mjs +9 -0
- package/src/output/excel/outputExcelDayReport.mjs +92 -0
- package/src/output/excel/perPeriod.mjs +24 -0
- package/src/{excel.mjs → output/excel.mjs} +3 -2
- package/src/output/index.mjs +79 -0
- package/src/output/json/overtime.mjs +9 -0
- package/src/output/tab/overtime.mjs +12 -0
- package/src/output/tab.mjs +0 -0
- package/src/output/text/commits.mjs +9 -0
- package/src/output/text/index.mjs +3 -0
- package/src/output/text/outputTxtDayReport.mjs +74 -0
- package/src/output/text/overtime.mjs +18 -0
- package/src/output/utils/getEsmJs.mjs +10 -0
- package/src/output/utils/index.mjs +14 -0
- package/src/output/utils/outputPath.mjs +19 -0
- package/src/output/utils/writeFile.mjs +10 -0
- package/src/serve/index.mjs +0 -0
- package/src/{server.mjs → serve/startServer.mjs} +21 -3
- package/src/serve/writeData.mjs +0 -0
- package/src/utils/authorNormalizer.mjs +28 -2
- package/src/utils/buildAuthorChangeStats.mjs +44 -0
- package/src/utils/deepMerge.mjs +13 -0
- package/src/utils/getPackage.mjs +11 -0
- package/src/utils/getProfileDirFile.mjs +12 -0
- package/src/utils/{file.mjs → groupRecords.mjs} +8 -9
- package/src/utils/index.mjs +5 -2
- package/src/utils/logger.mjs +28 -17
- package/src/utils/profiler.mjs +0 -101
- package/src/utils/resolve.mjs +11 -0
- package/src/utils/showVersionInfo.mjs +6 -2
- package/src/utils/time.mjs +0 -0
- package/src/utils/wait.mjs +2 -0
- package/web/app.js +3197 -257
- package/web/index.html +171 -22
- package/web/revoke/alpha1/app.js +4324 -0
- package/web/revoke/alpha1/index.html +266 -0
- package/web/revoke/app.before.js +3139 -0
- package/web/revoke/index-before.html +181 -0
- package/web/static/style.css +116 -9
- package/src/git.mjs +0 -256
- package/src/handlers/handleServe.mjs +0 -203
- package/src/lib/configStore.mjs +0 -11
- package/src/lib/memoize.mjs +0 -14
- package/src/utils/analyzeOvertimeCached.mjs +0 -7
- package/src/utils/checkUpdate.mjs +0 -130
- package/src/utils/exitWithTime.mjs +0 -17
- package/src/utils/handleSuccess.mjs +0 -9
- package/src/utils/logDev.mjs +0 -19
- package/src/utils/output.mjs +0 -26
- package/src/utils/profiler/diff.mjs +0 -26
- package/src/utils/profiler/format.mjs +0 -11
- package/src/utils/profiler/index.mjs +0 -144
- package/src/utils/profiler/trace.mjs +0 -26
- package/src/utils/time/scopeTimer.mjs +0 -37
- package/src/utils/time/timer.mjs +0 -33
- package/src/utils/time/withTimer.mjs +0 -11
- package/src/utils/timer.mjs +0 -35
- /package/src/{overtime → domain/overtime}/createOvertimeStats.mjs +0 -0
- /package/src/{overtime → domain/overtime}/overtime.mjs +0 -0
- /package/src/{json.mjs → output/json.mjs} +0 -0
- /package/src/{renderAuthorMapText.mjs → output/renderAuthorMapText.mjs} +0 -0
- /package/src/{stats-text.mjs → output/stats-text.mjs} +0 -0
- /package/src/{stats.mjs → output/stats.mjs} +0 -0
- /package/src/{text.mjs → output/text.mjs} +0 -0
package/README.zh-CN.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<p align="center"> <img src="https://raw.githubusercontent.com/tomatobybike/wukong-gitlog-cli/main/images/logo.svg" width="200" alt="wukong-dev Logo" /> </p> <p align="center"> <a href="https://www.npmjs.com/package/wukong-gitlog-cli"><img src="https://img.shields.io/npm/v/wukong-gitlog-cli.svg" alt="npm version"></a> <a href="https://www.npmjs.com/package/wukong-gitlog-cli"><img src="https://img.shields.io/npm/dm/wukong-gitlog-cli.svg" alt="downloads"></a> <a href="https://github.com/tomatobybike/wukong-gitlog-cli/blob/master/LICENSE"><img src="https://img.shields.io/github/license/tomatobybike/wukong-gitlog-cli.svg" alt="license"></a> <a href="https://github.com/tomatobybike/wukong-gitlog-cli"><img src="https://img.shields.io/github/stars/tomatobybike/wukong-gitlog-cli.svg?style=social" alt="GitHub stars"></a> <a href="https://github.com/tomatobybike/wukong-gitlog-cli/issues"><img src="https://img.shields.io/github/issues/tomatobybike/wukong-gitlog-cli.svg" alt="issues"></a> </p>
|
|
4
4
|
|
|
5
|
-
一个增强型的 Git
|
|
5
|
+
一个增强型的 Git 提交记录分析与导出工具。支持 **Excel / JSON / TXT** 输出、分组统计、加班文化分析、Gerrit 链接集成,并带有可视化 Web Dashboard。
|
|
6
6
|
|
|
7
7
|
## 中文 | [English](./README.md)
|
|
8
8
|
|
|
@@ -10,210 +10,161 @@
|
|
|
10
10
|
|
|
11
11
|
## ✨ 功能特性
|
|
12
12
|
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
- 提供加班文化分析(每日工作时段、节假日、周末等)
|
|
22
|
-
|
|
23
|
-
- 自带本地 Web Dashboard,可显示柱状图、折线图、饼图
|
|
24
|
-
|
|
25
|
-
- 小而精简的 CLI,依赖极少,基于 ZX + ExcelJS
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## 🆕 更新内容
|
|
30
|
-
|
|
31
|
-
- 新增 `--gerrit` 支持,自定义 Gerrit URL 模板
|
|
32
|
-
|
|
33
|
-
- 新增 `--out-dir` / `--out-parent` 控制输出目录
|
|
34
|
-
|
|
35
|
-
- 新增多种 `npm` demo 脚本,便于测试和演示
|
|
36
|
-
|
|
37
|
-
- `src/utils` 结构优化,使用 barrel 导出
|
|
13
|
+
- **多格式导出**:支持将 Git 记录导出为 JSON、文本或 Excel (XLSX)。
|
|
14
|
+
- **灵活分组**:支持按天或按月进行记录分组。
|
|
15
|
+
- **加班分析**:分析每日工作时长、节假日、周末加班情况,并提供累计风险评估。
|
|
16
|
+
- **Gerrit 集成**:支持自定义 Gerrit URL 模板(支持 `{{hash}}`、`{{changeId}}`、`{{changeNumber}}`)。
|
|
17
|
+
- **Web Dashboard**:内置本地可视化面板,包含图表和风险摘要。
|
|
18
|
+
- **去重功能**:自动根据 `Change-Id` 对提交记录进行去重。
|
|
19
|
+
- **作者映射**:支持 `authorAliases` 配置,将不同的邮箱/用户名合并为同一人。
|
|
38
20
|
|
|
39
21
|
---
|
|
40
22
|
|
|
41
23
|
## 📥 安装
|
|
42
24
|
|
|
43
|
-
|
|
25
|
+
推荐全局安装:
|
|
44
26
|
|
|
45
27
|
```bash
|
|
46
28
|
npm i -g wukong-gitlog-cli
|
|
47
29
|
# 或
|
|
48
30
|
yarn global add wukong-gitlog-cli
|
|
49
31
|
|
|
50
|
-
#
|
|
32
|
+
# 运行
|
|
51
33
|
wukong-gitlog-cli --help
|
|
52
34
|
```
|
|
53
35
|
|
|
54
36
|
---
|
|
55
37
|
|
|
56
|
-
## 🚀
|
|
38
|
+
## 🚀 快速开始
|
|
57
39
|
|
|
58
40
|
```bash
|
|
59
|
-
|
|
60
|
-
|
|
41
|
+
# 初始化配置文件
|
|
42
|
+
wukong-gitlog-cli init
|
|
61
43
|
|
|
62
|
-
|
|
63
|
-
wukong-gitlog-cli
|
|
44
|
+
# 执行分析并启动 Web Dashboard
|
|
45
|
+
wukong-gitlog-cli serve --overtime
|
|
64
46
|
```
|
|
65
47
|
|
|
66
|
-
### 常用参数
|
|
67
|
-
|
|
68
|
-
| 参数 | 描述 |
|
|
69
|
-
| -------------------- | ------------------------------------------------------------------ |
|
|
70
|
-
| `--author <name>` | 按作者过滤 |
|
|
71
|
-
| `--email <email>` | 按邮箱过滤 |
|
|
72
|
-
| `--since <date>` | 起始日期(如 2025-01-01) |
|
|
73
|
-
| `--until <date>` | 结束日期 |
|
|
74
|
-
| `--limit <n>` | 限制提交数量 |
|
|
75
|
-
| `--no-merges` | 排除 merge 提交 |
|
|
76
|
-
| `--json` | 输出 JSON |
|
|
77
|
-
| `--format <type>` | 输出格式: text / excel / json(默认 text) |
|
|
78
|
-
| `--group-by <type>` | 分组: day / month |
|
|
79
|
-
| `--overtime` | 启用加班文化分析 |
|
|
80
|
-
| `--country <code>` | 假期:CN 或 US(默认 CN) |
|
|
81
|
-
| `--stats` | Excel 中包含统计 sheet |
|
|
82
|
-
| `--gerrit <prefix>` | Gerrit URL 模板 |
|
|
83
|
-
| `--gerrit-api <url>` | Gerrit API 地址(用于 changeNumber) |
|
|
84
|
-
| `--out <file>` | 输出文件名 |
|
|
85
|
-
| `--out-dir <dir>` | 输出目录 |
|
|
86
|
-
| `--out-parent` | 输出到父目录的 `output/` |
|
|
87
|
-
| `--serve` | 启动本地 Web 服务查看提交统计(会生成 output/data 下的数据) |
|
|
88
|
-
| `--port <n>` | Web 服务端口(默认 3000) |
|
|
89
|
-
| `--serve-only` | 仅启动 Web 服务,不导出或分析数据(使用现有 output/data) |
|
|
90
|
-
| `--version` | 显示版本号 |
|
|
91
|
-
|
|
92
48
|
---
|
|
93
49
|
|
|
94
|
-
##
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
wukong-gitlog-cli --overtime --limit 200 --format text --out commits.txt --per-period-formats csv,tab
|
|
98
|
-
```
|
|
50
|
+
## 🛠 命令详解
|
|
99
51
|
|
|
100
|
-
|
|
52
|
+
工具采用了子命令结构,更加模块化:
|
|
101
53
|
|
|
54
|
+
### 1. `init`
|
|
55
|
+
初始化配置文件(支持 `.wukonggitlogrc` YAML、JS 或 JSON 格式)。
|
|
102
56
|
```bash
|
|
103
|
-
wukong-gitlog-cli
|
|
57
|
+
wukong-gitlog-cli init [-f, --force]
|
|
104
58
|
```
|
|
105
59
|
|
|
106
|
-
|
|
107
|
-
|
|
60
|
+
### 2. `analyze`
|
|
61
|
+
核心分析命令。获取 Git 日志并执行全面分析。
|
|
108
62
|
```bash
|
|
109
|
-
wukong-gitlog-cli
|
|
63
|
+
wukong-gitlog-cli analyze [options]
|
|
110
64
|
```
|
|
111
65
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
## 📈 启动本地 Dashboard
|
|
115
|
-
|
|
116
|
-
分析结果会导出为:
|
|
117
|
-
|
|
118
|
-
- `output/data/commits.mjs`
|
|
119
|
-
|
|
120
|
-
- `output/data/overtime-stats.mjs`
|
|
121
|
-
|
|
122
|
-
启动服务器:
|
|
123
|
-
|
|
66
|
+
### 3. `overtime`
|
|
67
|
+
专注于加班文化分析。
|
|
124
68
|
```bash
|
|
125
|
-
wukong-gitlog-cli
|
|
69
|
+
wukong-gitlog-cli overtime [options]
|
|
126
70
|
```
|
|
127
71
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
```
|
|
131
|
-
|
|
72
|
+
### 4. `export`
|
|
73
|
+
专注于将数据导出为不同格式。
|
|
74
|
+
```bash
|
|
75
|
+
wukong-gitlog-cli export [options]
|
|
132
76
|
```
|
|
133
77
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
<img src="https://raw.githubusercontent.com/tomatobybike/wukong-gitlog-cli/main/images/web/overtime.jpg" width="400" alt="wukong-dev Logo" />
|
|
137
|
-
</p>
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## 🔗 Gerrit 支持
|
|
141
|
-
|
|
142
|
-
示例:
|
|
143
|
-
|
|
78
|
+
### 5. `journal`
|
|
79
|
+
生成工作日报/日志。
|
|
144
80
|
```bash
|
|
145
|
-
wukong-gitlog-cli
|
|
81
|
+
wukong-gitlog-cli journal [options]
|
|
146
82
|
```
|
|
147
83
|
|
|
148
|
-
|
|
149
|
-
|
|
84
|
+
### 6. `serve`
|
|
85
|
+
启动本地 Web Dashboard。在启动前会自动执行分析以确保数据最新。
|
|
150
86
|
```bash
|
|
151
|
-
wukong-gitlog-cli
|
|
87
|
+
wukong-gitlog-cli serve [--port <n>]
|
|
152
88
|
```
|
|
153
89
|
|
|
154
|
-
|
|
90
|
+
---
|
|
155
91
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
92
|
+
## ⚙️ 参数选项
|
|
93
|
+
|
|
94
|
+
### 全局参数
|
|
95
|
+
- `-l, --lang <code>`:设置语言(en, zh-CN)。
|
|
96
|
+
- `--debug`:开启调试模式。
|
|
97
|
+
- `--info`:显示环境信息(Git 版本、操作系统等)。
|
|
98
|
+
|
|
99
|
+
### Git 相关参数(适用于 `analyze`, `overtime`, `export`, `journal`)
|
|
100
|
+
- `--author <name>`:按作者名过滤。
|
|
101
|
+
- `--email <email>`:按邮箱过滤。
|
|
102
|
+
- `--since <date>`:起始日期(如 2025-01-01)。
|
|
103
|
+
- `--until <date>`:结束日期。
|
|
104
|
+
- `--limit <n>`:限制提交数量。
|
|
105
|
+
- `--no-merges`:排除 Merge 提交。
|
|
106
|
+
- `--path <path>`:Git 仓库路径。
|
|
107
|
+
|
|
108
|
+
### 分析相关参数
|
|
109
|
+
- `--work-start <hour>`:标准上班时间(默认:9)。
|
|
110
|
+
- `--work-end <hour>`:标准下班时间(默认:18)。
|
|
111
|
+
- `--overnight-cutoff <hour>`:跨天计算截止时间(默认:6)。
|
|
112
|
+
- `--country <code>`:节假日日历(CN, US 等)。
|
|
113
|
+
|
|
114
|
+
### 输出相关参数
|
|
115
|
+
- `-f, --format <type>`:输出格式(text, excel, json)。
|
|
116
|
+
- `--out <file>`:输出文件名。
|
|
117
|
+
- `--out-dir <dir>`:输出目录。
|
|
118
|
+
- `--stats`:在 Excel 中包含统计工作表。
|
|
160
119
|
|
|
161
120
|
---
|
|
162
121
|
|
|
163
|
-
##
|
|
122
|
+
## 📊 Web Dashboard
|
|
164
123
|
|
|
165
|
-
|
|
124
|
+
启动服务以查看交互式图表:
|
|
166
125
|
|
|
167
126
|
```bash
|
|
168
|
-
wukong-gitlog-cli
|
|
127
|
+
wukong-gitlog-cli serve
|
|
169
128
|
```
|
|
129
|
+
<p align="center">
|
|
130
|
+
<img src="https://raw.githubusercontent.com/tomatobybike/wukong-gitlog-cli/main/images/web/overtime.jpg" width="400" alt="wukong-dev Logo" />
|
|
131
|
+
</p>
|
|
170
132
|
|
|
171
|
-
|
|
133
|
+
访问 `http://localhost:3000` 查看:
|
|
134
|
+
- 按天/月的提交分布。
|
|
135
|
+
- 加班趋势和高峰时段。
|
|
136
|
+
- **最近 30 天加班时长风险**:自动计算过去 30 天的累计加班时长,并标注风险等级(轻度、中度、严重)。
|
|
172
137
|
|
|
173
|
-
|
|
174
|
-
wukong-gitlog-cli --format excel --stats --gerrit "https://gerrit.example.com/c/project/+/{{hash}}"
|
|
175
|
-
```
|
|
138
|
+
---
|
|
176
139
|
|
|
177
|
-
|
|
140
|
+
## 🔗 Gerrit 支持
|
|
178
141
|
|
|
142
|
+
在 Gerrit URL 中使用模板:
|
|
179
143
|
```bash
|
|
180
|
-
wukong-gitlog-cli
|
|
144
|
+
wukong-gitlog-cli analyze --gerrit "https://gerrit.example.com/c/project/+/{{hash}}"
|
|
181
145
|
```
|
|
182
146
|
|
|
183
|
-
|
|
184
|
-
|
|
147
|
+
若需使用数字形式的 `changeNumber`,请提供 Gerrit API 地址:
|
|
185
148
|
```bash
|
|
186
|
-
wukong-gitlog-cli
|
|
149
|
+
wukong-gitlog-cli analyze --gerrit "https://gerrit.example.com/c/project/+/{{changeNumber}}" --gerrit-api https://gerrit.example.com/gerrit
|
|
187
150
|
```
|
|
188
151
|
|
|
189
152
|
---
|
|
190
153
|
|
|
191
|
-
##
|
|
192
|
-
|
|
193
|
-
- 所有输出文件默认存放于 `output/`
|
|
154
|
+
## 🧾 作者映射 (`authorAliases`)
|
|
194
155
|
|
|
195
|
-
|
|
156
|
+
在配置文件中合并多个身份:
|
|
196
157
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
output/
|
|
203
|
-
custom-output/
|
|
158
|
+
```yaml
|
|
159
|
+
authorAliases:
|
|
160
|
+
"tomatoboy@abc.com": "汤姆"
|
|
161
|
+
"tomato@xxx.com": "汤姆"
|
|
162
|
+
"Tom Jacky": "汤姆"
|
|
204
163
|
```
|
|
205
164
|
|
|
206
165
|
---
|
|
207
166
|
|
|
208
|
-
## 🤝 贡献指南
|
|
209
167
|
|
|
210
|
-
|
|
211
|
-
如果添加新参数或输出字段,请记得同步更新 README。
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
## 📄 License
|
|
168
|
+
## 📄 开源协议
|
|
216
169
|
|
|
217
170
|
MIT
|
|
218
|
-
|
|
219
|
-
---
|
package/bin/wukong-gitlog-cli
CHANGED
|
File without changes
|