diff --git a/src/lib/cherrypickAndCreateTargetPullRequest/waitForCherrypick.ts b/src/lib/cherrypickAndCreateTargetPullRequest/waitForCherrypick.ts index 67b71b9f..1468c781 100644 --- a/src/lib/cherrypickAndCreateTargetPullRequest/waitForCherrypick.ts +++ b/src/lib/cherrypickAndCreateTargetPullRequest/waitForCherrypick.ts @@ -177,7 +177,7 @@ async function cherrypickAndHandleConflicts({ */ if (options.editor) { - await spawnPromise(options.editor, [repoPath], options.cwd); + await spawnPromise(options.editor, [repoPath], options.cwd, true); } // list files with conflict markers + unstaged files and require user to resolve them diff --git a/src/lib/child-process-promisified.ts b/src/lib/child-process-promisified.ts index 9fac2f86..b60a4dd8 100644 --- a/src/lib/child-process-promisified.ts +++ b/src/lib/child-process-promisified.ts @@ -36,6 +36,7 @@ export async function spawnPromise( cmd: string, cmdArgs: ReadonlyArray, cwd: string, + isInteractive = false, ): Promise { const spawnSpan = startSpawnSpan(cmd, cmdArgs); const fullCmd = getFullCmd(cmd, cmdArgs); @@ -47,15 +48,16 @@ export async function spawnPromise( // ensure that git commands return english error messages env: { ...process.env, LANG: 'en_US' }, + ...(isInteractive ? { stdio: 'inherit' } : undefined), }); let stderr = ''; let stdout = ''; - subprocess.stdout.on('data', (data: string) => { + subprocess.stdout?.on('data', (data: string) => { stdout += data; }); - subprocess.stderr.on('data', (data: string) => { + subprocess.stderr?.on('data', (data: string) => { stderr += data; });