perf: shallow fetch the actual base when rebasing from working base (#2816)

* Update git.fetch calls to use depth=1 (#2810)

* When base is set, fetch depth=1

* PR Feedback - remove depth=1 from tryFetch function

* push-to-fork fix

* test updates to handle shallow fetch of base

---------

Co-authored-by: Eric Webb <eric@collectivegenius.net>
This commit is contained in:
Peter Evans 2024-03-12 23:16:55 +09:00 committed by GitHub
parent 57a101480a
commit 70a41aba78
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 35 additions and 12 deletions

9
dist/index.js vendored
View file

@ -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']);
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']);
yield git.fetch([`${base}:${base}`], baseRemote, fetchArgs);
}
// Try to fetch the pull request branch
if (!(yield tryFetch(git, branchRemoteName, branch))) {