Only add version to .git-blame-ignore-revs when files changed (#16352)

This commit is contained in:
fisker Cheung authored and GitHub committed 2024-06-05 17:01:19 +08:00
1 parent ab65eb40cb
commit 1c439735fd
3 files changed
+68 -67

No files matched your search

-60
View File
@@ -5,18 +5,8 @@
# See https://git-scm.com/docs/git-blame#Documentation/git-blame.txt---ignore-revs-fileltfilegt
# Prettier bump after release
# 3.3.0
1af485ad2602b8de23dfa244b59fe6d6534263eb
# 3.2.5
9a794f9cdbcfdc1536db97e4656e58414523a2f2
# 3.2.4
b77b958aecba1d230bd73ce308bdb70163a1c231
# 3.2.3
4985be553e911fef7d83f3341eb143c443473c58
# 3.2.2
afc0a6b5fae11c86c18bbc345775821607d4d41d
# 3.2.1
5811ad00705488365e0d0baf50c92965edddf58e
# 3.2.0
ee0d667fa2bf175c194f2f93c98c25a575454476
# 3.1.1
@@ -31,68 +21,18 @@ eebf0e4b5ec8ac24393c56ced4b4819d4c551f31
64b6e83884c2fa513ec6199b1812e03315ebbb4e
# 3.0.0
fa484156174a6553b4155a0a7455f69e404b61a7
# 2.8.8
fe8fcb5f9888ddbe9c749da01439dbdc7d28e367
# 2.8.7
0e26a75ebf0cb5b436f6a2d26a7bb88d04f23b90
# 2.8.6
0461cdd8149f0bb9bb95dfac5faed75b47f77689
# 2.8.5
c1808e86a3c7c2c8f43093f99e78fce3b6d0a97d
# 2.8.4
f3b23ab63c9387329dc1993e1d0aa71583d67a0b
# 2.8.3
9e9f8ec13f0420a4825fdba85d79ddeaaef1e00c
# 2.8.2
b9c3cd4c7016dfb1bb3539c5b3db15fdd54b9f6f
# 2.8.1
b87de09bcf9a523fe3da31394ba0e6f5d107cf3e
# 2.8.0
4049e49fe2a939facd6f46be338a3be9c1c0489e
# 2.7.1
1f9baef429df2516ff8eb835fd8c020b5e854a5f
# 2.7.0
59ec4f2ef4aef37c10a265aa7fc568c596fb4427
# 2.6.2
e2d9e9139d34043c8e6c45cda2777de013340e2e
# 2.6.1
678fe1562dc1347fc0539334ee5cbaea79ea8af7
# 2.6.0
f7c44237331348c001c2907e844cd0d1530b23ff
# 2.5.1
4683a6284d53b913f129694a5be666fc55b06982
# 2.5.0
846dbdd7e8c9deb315b3e663b3103c559e798a89
# 2.4.1
2b5b22056e7e180ba52b04c849b6e8a1e26d87d1
# 2.4.0
ef514b9b5c817cf5105bac31a59e88cbdbdf189b
# 2.3.2
0747d9204113ee4bb4e3c2bab113dc3772a5e8d9
# 2.3.1
a34b4a711ed9928f8809bed3f4c8572dc3a40efb
# 2.3.0
3d8dc612b54cef741a1c31da1011a2d48748a1dd
# 2.2.1
80961835a68e3de1b14819a7b77583a54d2b63d7
# 2.2.0
cf354c205de9841a2d306387473dac369359ca2b
# 2.1.2
c4d3014b95122f4ad19c319a9b3f5f9625d6003f
# 2.1.1
a8363197118e530d948978da6e5c414a765ba9c0
# 2.1.0
cef4bcafc7867050582d3107632bde7e722575d1
# 2.0.5
d33f8a3e2c0a59cb9f383ddec5bbf8d296bb1a23
# 2.0.4
592149791e4fea656d8c5fa34c25d4d19076a07a
# 2.0.3
64b3ac9e8e933a09f049b7cace540ee526f4d5a4
# 2.0.2
c1dd17cf383b78fd8fd43442bb5db59b51900410
# 2.0.1
f56d620be529b60c13032681446c1eb76e0fb088
# 2.0.0
9dad95b35f935edce4c3d6cfa45c79a0b9c82b9f
@@ -0,0 +1,49 @@
#!/usr/bin/env node
/*
Clean up `.git-blame-ignore-revs`
Remove revs without actual file change
*/
import fs from "node:fs/promises";
import { execa } from "execa";
const FILE = new URL("../.git-blame-ignore-revs", import.meta.url);
const content = await fs.readFile(FILE, "utf8");
const lines = content.split("\n");
const revsToRemove = new Set();
const IGNORED_FILES = new Set(["package.json", "yarn.lock"]);
async function getChangedFiles(rev) {
const { stdout } = await execa("git", [
"show",
"--name-only",
"--pretty=",
rev,
]);
const files = stdout.split("\n");
return files;
}
for (const line of lines) {
if (!line || line.startsWith("#")) {
continue;
}
const rev = line;
const changedFiles = await getChangedFiles(rev);
if (changedFiles.every((file) => IGNORED_FILES.has(file))) {
revsToRemove.add(rev);
}
}
if (revsToRemove.size > 0) {
const updated = lines.filter((line) => !revsToRemove.has(line)).join("\n");
await fs.writeFile(FILE, updated);
}
+19 -7
View File
@@ -9,17 +9,29 @@ async function format() {
await runYarn(["lint:prettier", "--write"]);
}
// Only add commit to `.git-blame-ignore-revs` when files except `package.json` and `yarn.lock` changed
const IGNORED_FILES = new Set(["package.json", "yarn.lock"]);
async function shouldAddToGitBlameIgnoreRevsFile() {
const { stdout } = await runGit(["diff", "--name-only"]);
const changedFiles = stdout.split("\n");
return changedFiles.some((file) => !IGNORED_FILES.has(file));
}
async function commit({ version, repo }) {
const filesChanged = shouldAddToGitBlameIgnoreRevsFile();
await runGit(["commit", "-am", `Bump Prettier dependency to ${version}`]);
// Add rev to `.git-blame-ignore-revs` file
const file = ".git-blame-ignore-revs";
const mark = "# Prettier bump after release";
const { stdout: rev } = await runGit(["rev-parse", "HEAD"]);
let text = fs.readFileSync(file, "utf8");
text = text.replace(mark, `${mark}\n# ${version}\n${rev}`);
fs.writeFileSync(file, text);
await runGit(["commit", "-am", `Git blame ignore ${version}`]);
if (filesChanged) {
const file = ".git-blame-ignore-revs";
const mark = "# Prettier bump after release";
const { stdout: rev } = await runGit(["rev-parse", "HEAD"]);
let text = fs.readFileSync(file, "utf8");
text = text.replace(mark, `${mark}\n# ${version}\n${rev}`);
fs.writeFileSync(file, text);
await runGit(["commit", "-am", `Git blame ignore ${version}`]);
}
await runGit(["push", "--repo", repo]);
}