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
|
# See https://git-scm.com/docs/git-blame#Documentation/git-blame.txt---ignore-revs-fileltfilegt
|
||||||
|
|
||||||
# Prettier bump after release
|
# Prettier bump after release
|
||||||
# 3.3.0
|
|
||||||
1af485ad2602b8de23dfa244b59fe6d6534263eb
|
|
||||||
# 3.2.5
|
|
||||||
9a794f9cdbcfdc1536db97e4656e58414523a2f2
|
|
||||||
# 3.2.4
|
|
||||||
b77b958aecba1d230bd73ce308bdb70163a1c231
|
|
||||||
# 3.2.3
|
# 3.2.3
|
||||||
4985be553e911fef7d83f3341eb143c443473c58
|
4985be553e911fef7d83f3341eb143c443473c58
|
||||||
# 3.2.2
|
|
||||||
afc0a6b5fae11c86c18bbc345775821607d4d41d
|
|
||||||
# 3.2.1
|
|
||||||
5811ad00705488365e0d0baf50c92965edddf58e
|
|
||||||
# 3.2.0
|
# 3.2.0
|
||||||
ee0d667fa2bf175c194f2f93c98c25a575454476
|
ee0d667fa2bf175c194f2f93c98c25a575454476
|
||||||
# 3.1.1
|
# 3.1.1
|
||||||
@@ -31,68 +21,18 @@ eebf0e4b5ec8ac24393c56ced4b4819d4c551f31
|
|||||||
64b6e83884c2fa513ec6199b1812e03315ebbb4e
|
64b6e83884c2fa513ec6199b1812e03315ebbb4e
|
||||||
# 3.0.0
|
# 3.0.0
|
||||||
fa484156174a6553b4155a0a7455f69e404b61a7
|
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
|
# 2.8.2
|
||||||
b9c3cd4c7016dfb1bb3539c5b3db15fdd54b9f6f
|
b9c3cd4c7016dfb1bb3539c5b3db15fdd54b9f6f
|
||||||
# 2.8.1
|
|
||||||
b87de09bcf9a523fe3da31394ba0e6f5d107cf3e
|
|
||||||
# 2.8.0
|
|
||||||
4049e49fe2a939facd6f46be338a3be9c1c0489e
|
|
||||||
# 2.7.1
|
|
||||||
1f9baef429df2516ff8eb835fd8c020b5e854a5f
|
|
||||||
# 2.7.0
|
# 2.7.0
|
||||||
59ec4f2ef4aef37c10a265aa7fc568c596fb4427
|
59ec4f2ef4aef37c10a265aa7fc568c596fb4427
|
||||||
# 2.6.2
|
|
||||||
e2d9e9139d34043c8e6c45cda2777de013340e2e
|
|
||||||
# 2.6.1
|
|
||||||
678fe1562dc1347fc0539334ee5cbaea79ea8af7
|
|
||||||
# 2.6.0
|
# 2.6.0
|
||||||
f7c44237331348c001c2907e844cd0d1530b23ff
|
f7c44237331348c001c2907e844cd0d1530b23ff
|
||||||
# 2.5.1
|
|
||||||
4683a6284d53b913f129694a5be666fc55b06982
|
|
||||||
# 2.5.0
|
|
||||||
846dbdd7e8c9deb315b3e663b3103c559e798a89
|
|
||||||
# 2.4.1
|
|
||||||
2b5b22056e7e180ba52b04c849b6e8a1e26d87d1
|
|
||||||
# 2.4.0
|
|
||||||
ef514b9b5c817cf5105bac31a59e88cbdbdf189b
|
|
||||||
# 2.3.2
|
|
||||||
0747d9204113ee4bb4e3c2bab113dc3772a5e8d9
|
|
||||||
# 2.3.1
|
# 2.3.1
|
||||||
a34b4a711ed9928f8809bed3f4c8572dc3a40efb
|
a34b4a711ed9928f8809bed3f4c8572dc3a40efb
|
||||||
# 2.3.0
|
# 2.3.0
|
||||||
3d8dc612b54cef741a1c31da1011a2d48748a1dd
|
3d8dc612b54cef741a1c31da1011a2d48748a1dd
|
||||||
# 2.2.1
|
|
||||||
80961835a68e3de1b14819a7b77583a54d2b63d7
|
|
||||||
# 2.2.0
|
|
||||||
cf354c205de9841a2d306387473dac369359ca2b
|
|
||||||
# 2.1.2
|
|
||||||
c4d3014b95122f4ad19c319a9b3f5f9625d6003f
|
|
||||||
# 2.1.1
|
|
||||||
a8363197118e530d948978da6e5c414a765ba9c0
|
|
||||||
# 2.1.0
|
# 2.1.0
|
||||||
cef4bcafc7867050582d3107632bde7e722575d1
|
cef4bcafc7867050582d3107632bde7e722575d1
|
||||||
# 2.0.5
|
|
||||||
d33f8a3e2c0a59cb9f383ddec5bbf8d296bb1a23
|
|
||||||
# 2.0.4
|
|
||||||
592149791e4fea656d8c5fa34c25d4d19076a07a
|
|
||||||
# 2.0.3
|
|
||||||
64b3ac9e8e933a09f049b7cace540ee526f4d5a4
|
|
||||||
# 2.0.2
|
|
||||||
c1dd17cf383b78fd8fd43442bb5db59b51900410
|
|
||||||
# 2.0.1
|
|
||||||
f56d620be529b60c13032681446c1eb76e0fb088
|
|
||||||
# 2.0.0
|
# 2.0.0
|
||||||
9dad95b35f935edce4c3d6cfa45c79a0b9c82b9f
|
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"]);
|
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 }) {
|
async function commit({ version, repo }) {
|
||||||
|
const filesChanged = shouldAddToGitBlameIgnoreRevsFile();
|
||||||
|
|
||||||
await runGit(["commit", "-am", `Bump Prettier dependency to ${version}`]);
|
await runGit(["commit", "-am", `Bump Prettier dependency to ${version}`]);
|
||||||
|
|
||||||
// Add rev to `.git-blame-ignore-revs` file
|
// Add rev to `.git-blame-ignore-revs` file
|
||||||
const file = ".git-blame-ignore-revs";
|
if (filesChanged) {
|
||||||
const mark = "# Prettier bump after release";
|
const file = ".git-blame-ignore-revs";
|
||||||
const { stdout: rev } = await runGit(["rev-parse", "HEAD"]);
|
const mark = "# Prettier bump after release";
|
||||||
let text = fs.readFileSync(file, "utf8");
|
const { stdout: rev } = await runGit(["rev-parse", "HEAD"]);
|
||||||
text = text.replace(mark, `${mark}\n# ${version}\n${rev}`);
|
let text = fs.readFileSync(file, "utf8");
|
||||||
fs.writeFileSync(file, text);
|
text = text.replace(mark, `${mark}\n# ${version}\n${rev}`);
|
||||||
await runGit(["commit", "-am", `Git blame ignore ${version}`]);
|
fs.writeFileSync(file, text);
|
||||||
|
await runGit(["commit", "-am", `Git blame ignore ${version}`]);
|
||||||
|
}
|
||||||
|
|
||||||
await runGit(["push", "--repo", repo]);
|
await runGit(["push", "--repo", repo]);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user