Skip to content

Commit bd6ab41

Browse files
authored
fix(read): update git-raw-commits to v5 API (#4638)
* fix(read): update git-raw-commits to v5 API * fix(read): improve skip validation and memory optimization * docs(read): explain git-log-args limitation with v5
1 parent 17537ae commit bd6ab41

File tree

4 files changed

+60
-49
lines changed

4 files changed

+60
-49
lines changed

@commitlint/read/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@
3838
"devDependencies": {
3939
"@commitlint/test": "^20.4.3",
4040
"@commitlint/utils": "^20.0.0",
41-
"@types/git-raw-commits": "^2.0.3",
41+
"@types/git-raw-commits": "^5.0.0",
4242
"@types/minimist": "^1.2.4"
4343
},
4444
"dependencies": {
4545
"@commitlint/top-level": "^20.4.3",
4646
"@commitlint/types": "^20.4.3",
47-
"git-raw-commits": "^4.0.0",
47+
"git-raw-commits": "^5.0.0",
4848
"minimist": "^1.2.8",
4949
"tinyexec": "^1.0.0"
5050
},
Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,33 @@
1-
import gitRawCommits from "git-raw-commits";
2-
3-
import { streamToPromise } from "./stream-to-promise.js";
1+
import type { GitOptions } from "git-raw-commits";
2+
import { getRawCommits } from "git-raw-commits";
43

54
// Get commit messages from history
65
export async function getHistoryCommits(
7-
options: gitRawCommits.GitOptions,
6+
options: GitOptions,
87
opts: { cwd?: string } = {},
98
): Promise<string[]> {
10-
return streamToPromise(gitRawCommits(options, { cwd: opts.cwd }));
9+
// Note: git-raw-commits v5 drops support for arbitrary git log arguments.
10+
// We extract and handle 'skip' manually here to preserve backward compatibility.
11+
// Other arbitrary arguments passed via gitLogArgs may be silently ignored by v5.
12+
const { skip: skipRaw, ...gitOptions } = options as GitOptions & {
13+
skip?: unknown;
14+
};
15+
16+
let skipNum = 0;
17+
if (skipRaw !== undefined) {
18+
skipNum = Number(skipRaw);
19+
if (!Number.isInteger(skipNum) || skipNum < 0) {
20+
throw new TypeError(`Invalid skip value: ${skipRaw}`);
21+
}
22+
}
23+
24+
const data: string[] = [];
25+
for await (const commit of getRawCommits({ ...gitOptions, cwd: opts.cwd })) {
26+
if (skipNum > 0) {
27+
skipNum--;
28+
continue;
29+
}
30+
data.push(commit);
31+
}
32+
return data;
1133
}

@commitlint/read/src/stream-to-promise.ts

Lines changed: 0 additions & 11 deletions
This file was deleted.

yarn.lock

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,15 @@
312312
"@babel/helper-string-parser" "^7.27.1"
313313
"@babel/helper-validator-identifier" "^7.28.5"
314314

315+
"@conventional-changelog/git-client@^2.6.0":
316+
version "2.6.0"
317+
resolved "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-2.6.0.tgz#1c7a13681426a7bc4298d24c92cda3a6d6fba544"
318+
integrity sha512-T+uPDciKf0/ioNNDpMGc8FDsehJClZP0yR3Q5MN6wE/Y/1QZ7F+80OgznnTCOlMEG4AV0LvH2UJi3C/nBnaBUg==
319+
dependencies:
320+
"@simple-libs/child-process-utils" "^1.0.0"
321+
"@simple-libs/stream-utils" "^1.2.0"
322+
semver "^7.5.2"
323+
315324
"@docsearch/css@3.8.2":
316325
version "3.8.2"
317326
resolved "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz#7973ceb6892c30f154ba254cd05c562257a44977"
@@ -1601,6 +1610,13 @@
16011610
"@sigstore/core" "^1.1.0"
16021611
"@sigstore/protobuf-specs" "^0.3.2"
16031612

1613+
"@simple-libs/child-process-utils@^1.0.0":
1614+
version "1.0.2"
1615+
resolved "https://registry.npmjs.org/@simple-libs/child-process-utils/-/child-process-utils-1.0.2.tgz#cb182d310c9bed3ace200b26258e090d898a1736"
1616+
integrity sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==
1617+
dependencies:
1618+
"@simple-libs/stream-utils" "^1.2.0"
1619+
16041620
"@simple-libs/stream-utils@^1.2.0":
16051621
version "1.2.0"
16061622
resolved "https://registry.npmjs.org/@simple-libs/stream-utils/-/stream-utils-1.2.0.tgz#5af724b826f1ab4d7f2826d31d3efccec124102b"
@@ -1759,10 +1775,10 @@
17591775
"@types/jsonfile" "*"
17601776
"@types/node" "*"
17611777

1762-
"@types/git-raw-commits@^2.0.3":
1763-
version "2.0.4"
1764-
resolved "https://registry.npmjs.org/@types/git-raw-commits/-/git-raw-commits-2.0.4.tgz#29a77a82043b7baaba823f8b34ab10191df138e9"
1765-
integrity sha512-PYmTK156j6TilbwtnO2JErH4TCC1izpgP3kRE3KUX35bjBOD2A+syCGeercqHXBcM6wL+DU0WbJB2Gz8fPR+8A==
1778+
"@types/git-raw-commits@^5.0.0":
1779+
version "5.0.1"
1780+
resolved "https://registry.npmjs.org/@types/git-raw-commits/-/git-raw-commits-5.0.1.tgz#825c653f4fcd5d49464f9df620f6efd1946eebfb"
1781+
integrity sha512-sd4kgxJbuZF0RDy6cX7KlKSGiwqB1mqn8nriUbxt5e1F+MO/N4hJlhaYn0Omw4g2biClFpT5Mre07x7OkGt8tg==
17661782
dependencies:
17671783
"@types/node" "*"
17681784

@@ -3423,11 +3439,6 @@ dargs@^7.0.0:
34233439
resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc"
34243440
integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==
34253441

3426-
dargs@^8.0.0:
3427-
version "8.1.0"
3428-
resolved "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz#a34859ea509cbce45485e5aa356fef70bfcc7272"
3429-
integrity sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==
3430-
34313442
dateformat@^3.0.3:
34323443
version "3.0.3"
34333444
resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
@@ -4337,14 +4348,13 @@ git-raw-commits@^3.0.0:
43374348
meow "^8.1.2"
43384349
split2 "^3.2.2"
43394350

4340-
git-raw-commits@^4.0.0:
4341-
version "4.0.0"
4342-
resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz#b212fd2bff9726d27c1283a1157e829490593285"
4343-
integrity sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==
4351+
git-raw-commits@^5.0.0:
4352+
version "5.0.1"
4353+
resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-5.0.1.tgz#e91d8fd4e3a264142166956fe1a23d08c069657e"
4354+
integrity sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ==
43444355
dependencies:
4345-
dargs "^8.0.0"
4346-
meow "^12.0.1"
4347-
split2 "^4.0.0"
4356+
"@conventional-changelog/git-client" "^2.6.0"
4357+
meow "^13.0.0"
43484358

43494359
git-remote-origin-url@^2.0.0:
43504360
version "2.0.0"
@@ -5582,11 +5592,6 @@ mdast-util-to-hast@^13.0.0:
55825592
unist-util-visit "^5.0.0"
55835593
vfile "^6.0.0"
55845594

5585-
meow@^12.0.1:
5586-
version "12.1.1"
5587-
resolved "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz#e558dddbab12477b69b2e9a2728c327f191bace6"
5588-
integrity sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==
5589-
55905595
meow@^13.0.0:
55915596
version "13.2.0"
55925597
resolved "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz#6b7d63f913f984063b3cc261b6e8800c4cd3474f"
@@ -6952,16 +6957,16 @@ semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semve
69526957
resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946"
69536958
integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==
69546959

6960+
semver@^7.5.2, semver@^7.6.0, semver@^7.7.3:
6961+
version "7.7.4"
6962+
resolved "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a"
6963+
integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==
6964+
69556965
semver@^7.5.4, semver@^7.7.1, semver@^7.7.2:
69566966
version "7.7.2"
69576967
resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58"
69586968
integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
69596969

6960-
semver@^7.6.0, semver@^7.7.3:
6961-
version "7.7.4"
6962-
resolved "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a"
6963-
integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==
6964-
69656970
set-blocking@^2.0.0:
69666971
version "2.0.0"
69676972
resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
@@ -7129,11 +7134,6 @@ split2@^3.2.2:
71297134
dependencies:
71307135
readable-stream "^3.0.0"
71317136

7132-
split2@^4.0.0:
7133-
version "4.2.0"
7134-
resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4"
7135-
integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==
7136-
71377137
split@^1.0.1:
71387138
version "1.0.1"
71397139
resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9"

0 commit comments

Comments
 (0)