From dc6002a7b93481c9cc6cee3ec82cef6d6a56c8be Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 5 Mar 2022 17:23:11 +0100 Subject: [PATCH] cli: fall back --since diff to use ref if merge base lookup fails Signed-off-by: Patrik Oldsberg --- .changeset/warm-bananas-behave.md | 5 +++++ packages/cli/src/lib/git.ts | 11 +++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 .changeset/warm-bananas-behave.md diff --git a/.changeset/warm-bananas-behave.md b/.changeset/warm-bananas-behave.md new file mode 100644 index 0000000000..b1b6b4c8ec --- /dev/null +++ b/.changeset/warm-bananas-behave.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +The `--since` flag of repo commands now silently falls back to using the provided `ref` directly if no merge base is available. diff --git a/packages/cli/src/lib/git.ts b/packages/cli/src/lib/git.ts index f8783804d1..074260b38f 100644 --- a/packages/cli/src/lib/git.ts +++ b/packages/cli/src/lib/git.ts @@ -50,9 +50,16 @@ export async function listChangedFiles(ref: string) { if (!ref) { throw new Error('ref is required'); } - const [base] = await runGit('merge-base', 'HEAD', ref); - const tracked = await runGit('diff', '--name-only', base); + let diffRef = ref; + try { + const [base] = await runGit('merge-base', 'HEAD', ref); + diffRef = base; + } catch { + // silently fall back to using the ref directly if merge base is not available + } + + const tracked = await runGit('diff', '--name-only', diffRef); const untracked = await runGit('ls-files', '--others', '--exclude-standard'); return Array.from(new Set([...tracked, ...untracked]));