From ffac350e273cb55a229e97f2f36f59d81b60ef5b Mon Sep 17 00:00:00 2001 From: Jason Jean Date: Mon, 6 Mar 2023 13:54:20 -0500 Subject: [PATCH] fix(core): properly diff json from the merge-base (#15476) --- packages/nx/src/utils/command-line-utils.ts | 32 ++++++++++++++------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/packages/nx/src/utils/command-line-utils.ts b/packages/nx/src/utils/command-line-utils.ts index a25d39de1d..43cade1a78 100644 --- a/packages/nx/src/utils/command-line-utils.ts +++ b/packages/nx/src/utils/command-line-utils.ts @@ -166,6 +166,10 @@ export function splitArgsIntoNxArgsAndOverrides( }); } } + + if (nxArgs.base) { + nxArgs.base = getMergeBase(nxArgs.base, nxArgs.head); + } } if (!nxArgs.skipNxCache) { @@ -231,25 +235,33 @@ function getUntrackedFiles(): string[] { return parseGitOutput(`git ls-files --others --exclude-standard`); } -function getFilesUsingBaseAndHead(base: string, head: string): string[] { - let mergeBase: string; +function getMergeBase(base: string, head: string = 'HEAD') { try { - mergeBase = execSync(`git merge-base "${base}" "${head}"`, { + return execSync(`git merge-base "${base}" "${head}"`, { maxBuffer: TEN_MEGABYTES, cwd: workspaceRoot, + stdio: 'pipe', }) .toString() .trim(); } catch { - mergeBase = execSync(`git merge-base --fork-point "${base}" "${head}"`, { - maxBuffer: TEN_MEGABYTES, - cwd: workspaceRoot, - }) - .toString() - .trim(); + try { + return execSync(`git merge-base --fork-point "${base}" "${head}"`, { + maxBuffer: TEN_MEGABYTES, + cwd: workspaceRoot, + stdio: 'pipe', + }) + .toString() + .trim(); + } catch { + return base; + } } +} + +function getFilesUsingBaseAndHead(base: string, head: string): string[] { return parseGitOutput( - `git diff --name-only --no-renames --relative "${mergeBase}" "${head}"` + `git diff --name-only --no-renames --relative "${base}" "${head}"` ); }