From 810fe9fda774e946cfc77452d6bb00a4a118c309 Mon Sep 17 00:00:00 2001 From: Peter Evans <18365890+peter-evans@users.noreply.github.com> Date: Tue, 12 Mar 2024 13:55:03 +0000 Subject: [PATCH] push-to-fork fix --- dist/index.js | 9 +++++++-- src/create-or-update-branch.ts | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/dist/index.js b/dist/index.js index bc0bfac..57130a6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -183,8 +183,13 @@ function createOrUpdateBranch(git, commitMessage, base, branch, branchRemoteName // This will also be true if the working base type is a commit if (workingBase != base) { core.info(`Rebasing commits made to ${workingBaseType} '${workingBase}' on to base branch '${base}'`); + const fetchArgs = ['--force']; + if (branchRemoteName != 'fork') { + // If pushing to a fork we cannot shallow fetch otherwise the 'shallow update not allowed' error occurs + fetchArgs.push('--depth=1'); + } // Checkout the actual base - yield git.fetch([`${base}:${base}`], baseRemote, ['--force', '--depth=1']); + yield git.fetch([`${base}:${base}`], baseRemote, fetchArgs); yield git.checkout(base); // Cherrypick commits from the temporary branch starting from the working base const commits = yield git.revList([`${workingBase}..${tempBranch}`, '.'], ['--reverse']); @@ -197,7 +202,7 @@ function createOrUpdateBranch(git, commitMessage, base, branch, branchRemoteName // Reset the temp branch to the working index yield git.checkout(tempBranch, 'HEAD'); // Reset the base - yield git.fetch([`${base}:${base}`], baseRemote, ['--force', '--depth=1']); + yield git.fetch([`${base}:${base}`], baseRemote, fetchArgs); } // Try to fetch the pull request branch if (!(yield tryFetch(git, branchRemoteName, branch))) { diff --git a/src/create-or-update-branch.ts b/src/create-or-update-branch.ts index b048d5d..000dc51 100644 --- a/src/create-or-update-branch.ts +++ b/src/create-or-update-branch.ts @@ -199,8 +199,13 @@ export async function createOrUpdateBranch( core.info( `Rebasing commits made to ${workingBaseType} '${workingBase}' on to base branch '${base}'` ) + const fetchArgs = ['--force'] + if (branchRemoteName != 'fork') { + // If pushing to a fork we cannot shallow fetch otherwise the 'shallow update not allowed' error occurs + fetchArgs.push('--depth=1') + } // Checkout the actual base - await git.fetch([`${base}:${base}`], baseRemote, ['--force', '--depth=1']) + await git.fetch([`${base}:${base}`], baseRemote, fetchArgs) await git.checkout(base) // Cherrypick commits from the temporary branch starting from the working base const commits = await git.revList( @@ -219,7 +224,7 @@ export async function createOrUpdateBranch( // Reset the temp branch to the working index await git.checkout(tempBranch, 'HEAD') // Reset the base - await git.fetch([`${base}:${base}`], baseRemote, ['--force', '--depth=1']) + await git.fetch([`${base}:${base}`], baseRemote, fetchArgs) } // Try to fetch the pull request branch