Skip to content

Commit 1c43973

Browse files
authored
Only add version to .git-blame-ignore-revs when files changed (#16352)
1 parent ab65eb4 commit 1c43973

3 files changed

Lines changed: 68 additions & 67 deletions

File tree

‎.git-blame-ignore-revs‎

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,8 @@
55
# See https://git-scm.com/docs/git-blame#Documentation/git-blame.txt---ignore-revs-fileltfilegt
66

77
# Prettier bump after release
8-
# 3.3.0
9-
1af485ad2602b8de23dfa244b59fe6d6534263eb
10-
# 3.2.5
11-
9a794f9cdbcfdc1536db97e4656e58414523a2f2
12-
# 3.2.4
13-
b77b958aecba1d230bd73ce308bdb70163a1c231
148
# 3.2.3
159
4985be553e911fef7d83f3341eb143c443473c58
16-
# 3.2.2
17-
afc0a6b5fae11c86c18bbc345775821607d4d41d
18-
# 3.2.1
19-
5811ad00705488365e0d0baf50c92965edddf58e
2010
# 3.2.0
2111
ee0d667fa2bf175c194f2f93c98c25a575454476
2212
# 3.1.1
@@ -31,68 +21,18 @@ eebf0e4b5ec8ac24393c56ced4b4819d4c551f31
3121
64b6e83884c2fa513ec6199b1812e03315ebbb4e
3222
# 3.0.0
3323
fa484156174a6553b4155a0a7455f69e404b61a7
34-
# 2.8.8
35-
fe8fcb5f9888ddbe9c749da01439dbdc7d28e367
36-
# 2.8.7
37-
0e26a75ebf0cb5b436f6a2d26a7bb88d04f23b90
38-
# 2.8.6
39-
0461cdd8149f0bb9bb95dfac5faed75b47f77689
40-
# 2.8.5
41-
c1808e86a3c7c2c8f43093f99e78fce3b6d0a97d
42-
# 2.8.4
43-
f3b23ab63c9387329dc1993e1d0aa71583d67a0b
44-
# 2.8.3
45-
9e9f8ec13f0420a4825fdba85d79ddeaaef1e00c
4624
# 2.8.2
4725
b9c3cd4c7016dfb1bb3539c5b3db15fdd54b9f6f
48-
# 2.8.1
49-
b87de09bcf9a523fe3da31394ba0e6f5d107cf3e
50-
# 2.8.0
51-
4049e49fe2a939facd6f46be338a3be9c1c0489e
52-
# 2.7.1
53-
1f9baef429df2516ff8eb835fd8c020b5e854a5f
5426
# 2.7.0
5527
59ec4f2ef4aef37c10a265aa7fc568c596fb4427
56-
# 2.6.2
57-
e2d9e9139d34043c8e6c45cda2777de013340e2e
58-
# 2.6.1
59-
678fe1562dc1347fc0539334ee5cbaea79ea8af7
6028
# 2.6.0
6129
f7c44237331348c001c2907e844cd0d1530b23ff
62-
# 2.5.1
63-
4683a6284d53b913f129694a5be666fc55b06982
64-
# 2.5.0
65-
846dbdd7e8c9deb315b3e663b3103c559e798a89
66-
# 2.4.1
67-
2b5b22056e7e180ba52b04c849b6e8a1e26d87d1
68-
# 2.4.0
69-
ef514b9b5c817cf5105bac31a59e88cbdbdf189b
70-
# 2.3.2
71-
0747d9204113ee4bb4e3c2bab113dc3772a5e8d9
7230
# 2.3.1
7331
a34b4a711ed9928f8809bed3f4c8572dc3a40efb
7432
# 2.3.0
7533
3d8dc612b54cef741a1c31da1011a2d48748a1dd
76-
# 2.2.1
77-
80961835a68e3de1b14819a7b77583a54d2b63d7
78-
# 2.2.0
79-
cf354c205de9841a2d306387473dac369359ca2b
80-
# 2.1.2
81-
c4d3014b95122f4ad19c319a9b3f5f9625d6003f
82-
# 2.1.1
83-
a8363197118e530d948978da6e5c414a765ba9c0
8434
# 2.1.0
8535
cef4bcafc7867050582d3107632bde7e722575d1
86-
# 2.0.5
87-
d33f8a3e2c0a59cb9f383ddec5bbf8d296bb1a23
88-
# 2.0.4
89-
592149791e4fea656d8c5fa34c25d4d19076a07a
90-
# 2.0.3
91-
64b3ac9e8e933a09f049b7cace540ee526f4d5a4
92-
# 2.0.2
93-
c1dd17cf383b78fd8fd43442bb5db59b51900410
94-
# 2.0.1
95-
f56d620be529b60c13032681446c1eb76e0fb088
9636
# 2.0.0
9737
9dad95b35f935edce4c3d6cfa45c79a0b9c82b9f
9838

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/usr/bin/env node
2+
3+
/*
4+
Clean up `.git-blame-ignore-revs`
5+
6+
Remove revs without actual file change
7+
*/
8+
9+
import fs from "node:fs/promises";
10+
11+
import { execa } from "execa";
12+
13+
const FILE = new URL("../.git-blame-ignore-revs", import.meta.url);
14+
const content = await fs.readFile(FILE, "utf8");
15+
16+
const lines = content.split("\n");
17+
const revsToRemove = new Set();
18+
19+
const IGNORED_FILES = new Set(["package.json", "yarn.lock"]);
20+
async function getChangedFiles(rev) {
21+
const { stdout } = await execa("git", [
22+
"show",
23+
"--name-only",
24+
"--pretty=",
25+
rev,
26+
]);
27+
28+
const files = stdout.split("\n");
29+
return files;
30+
}
31+
32+
for (const line of lines) {
33+
if (!line || line.startsWith("#")) {
34+
continue;
35+
}
36+
37+
const rev = line;
38+
const changedFiles = await getChangedFiles(rev);
39+
40+
if (changedFiles.every((file) => IGNORED_FILES.has(file))) {
41+
revsToRemove.add(rev);
42+
}
43+
}
44+
45+
if (revsToRemove.size > 0) {
46+
const updated = lines.filter((line) => !revsToRemove.has(line)).join("\n");
47+
48+
await fs.writeFile(FILE, updated);
49+
}

‎scripts/release/steps/bump-prettier.js‎

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,29 @@ async function format() {
99
await runYarn(["lint:prettier", "--write"]);
1010
}
1111

12+
// Only add commit to `.git-blame-ignore-revs` when files except `package.json` and `yarn.lock` changed
13+
const IGNORED_FILES = new Set(["package.json", "yarn.lock"]);
14+
async function shouldAddToGitBlameIgnoreRevsFile() {
15+
const { stdout } = await runGit(["diff", "--name-only"]);
16+
const changedFiles = stdout.split("\n");
17+
return changedFiles.some((file) => !IGNORED_FILES.has(file));
18+
}
19+
1220
async function commit({ version, repo }) {
21+
const filesChanged = shouldAddToGitBlameIgnoreRevsFile();
22+
1323
await runGit(["commit", "-am", `Bump Prettier dependency to ${version}`]);
1424

1525
// Add rev to `.git-blame-ignore-revs` file
16-
const file = ".git-blame-ignore-revs";
17-
const mark = "# Prettier bump after release";
18-
const { stdout: rev } = await runGit(["rev-parse", "HEAD"]);
19-
let text = fs.readFileSync(file, "utf8");
20-
text = text.replace(mark, `${mark}\n# ${version}\n${rev}`);
21-
fs.writeFileSync(file, text);
22-
await runGit(["commit", "-am", `Git blame ignore ${version}`]);
26+
if (filesChanged) {
27+
const file = ".git-blame-ignore-revs";
28+
const mark = "# Prettier bump after release";
29+
const { stdout: rev } = await runGit(["rev-parse", "HEAD"]);
30+
let text = fs.readFileSync(file, "utf8");
31+
text = text.replace(mark, `${mark}\n# ${version}\n${rev}`);
32+
fs.writeFileSync(file, text);
33+
await runGit(["commit", "-am", `Git blame ignore ${version}`]);
34+
}
2335

2436
await runGit(["push", "--repo", repo]);
2537
}

0 commit comments

Comments
 (0)