fix(dev): rebuild dist after HEAD changes (#56510)

This commit is contained in:
Tak Hoffman
2026-03-28 11:49:09 -05:00
committed by GitHub
parent 840b806c2f
commit 54313a8730
2 changed files with 23 additions and 2 deletions

View File

@@ -211,10 +211,10 @@ const shouldBuild = (deps) => {
const currentHead = resolveGitHead(deps);
if (currentHead && !stamp.head) {
return hasSourceMtimeChanged(stamp.mtime, deps);
return true;
}
if (currentHead && stamp.head && currentHead !== stamp.head) {
return hasSourceMtimeChanged(stamp.mtime, deps);
return true;
}
if (currentHead) {
const dirty = hasDirtySourceTree(deps);

View File

@@ -319,6 +319,27 @@ describe("run-node script", () => {
});
});
it("rebuilds when git HEAD changes even if source mtimes do not exceed the old build stamp", async () => {
await withTempDir(async (tmp) => {
await setupTrackedProject(tmp, {
files: {
[ROOT_SRC]: "export const value = 1;\n",
},
oldPaths: [ROOT_SRC, ROOT_TSCONFIG, ROOT_PACKAGE],
buildPaths: [DIST_ENTRY, BUILD_STAMP],
});
const { spawnCalls, spawn, spawnSync } = createSpawnRecorder({
gitHead: "def456\n",
gitStatus: "",
});
const exitCode = await runStatusCommand({ tmp, spawn, spawnSync });
expect(exitCode).toBe(0);
expect(spawnCalls).toEqual([expectedBuildSpawn(), statusCommandSpawn()]);
});
});
it("skips rebuilding when extension package metadata is newer than the build stamp", async () => {
await withTempDir(async (tmp) => {
await setupTrackedProject(tmp, {