Only add version to .git-blame-ignore-revs when files changed (#16352)
This commit is contained in:
1 parent
ab65eb40cb
commit
1c439735fd
3 files changed
+68
-67
No files matched your search
@@ -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);
|
||||
}
|
||||
@@ -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]);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user