diff --git a/dist/index.js b/dist/index.js index cb568b3..7efc7df 100644 --- a/dist/index.js +++ b/dist/index.js @@ -171,9 +171,7 @@ function createOrUpdateBranch(git, commitMessage, base, branch, branchRemoteName if (branchRemoteName == 'fork') { // If pushing to a fork we must fetch with 'unshallow' to avoid the following error on git push // ! [remote rejected] HEAD -> tests/push-branch-to-fork (shallow update not allowed) - yield git.fetch([`${workingBase}:${workingBase}`], baseRemote, [ - '--force' - ]); + yield git.fetch([`${workingBase}:${workingBase}`], baseRemote, ['--force'], true); } else { // If the remote is 'origin' we can git reset @@ -801,14 +799,15 @@ class GitCommandManager { return output.exitCode === 0; }); } - fetch(refSpec, remoteName, options) { + fetch(refSpec, remoteName, options, unshallow = false) { return __awaiter(this, void 0, void 0, function* () { const args = ['-c', 'protocol.version=2', 'fetch']; if (!refSpec.some(x => x === tagsRefSpec)) { args.push('--no-tags'); } args.push('--progress', '--no-recurse-submodules'); - if (utils.fileExistsSync(path.join(this.workingDirectory, '.git', 'shallow'))) { + if (unshallow && + utils.fileExistsSync(path.join(this.workingDirectory, '.git', 'shallow'))) { args.push('--unshallow'); } if (options) { diff --git a/src/create-or-update-branch.ts b/src/create-or-update-branch.ts index cb1fcbb..1c55ea5 100644 --- a/src/create-or-update-branch.ts +++ b/src/create-or-update-branch.ts @@ -180,9 +180,12 @@ export async function createOrUpdateBranch( if (branchRemoteName == 'fork') { // If pushing to a fork we must fetch with 'unshallow' to avoid the following error on git push // ! [remote rejected] HEAD -> tests/push-branch-to-fork (shallow update not allowed) - await git.fetch([`${workingBase}:${workingBase}`], baseRemote, [ - '--force' - ]) + await git.fetch( + [`${workingBase}:${workingBase}`], + baseRemote, + ['--force'], + true + ) } else { // If the remote is 'origin' we can git reset await git.checkout(workingBase) diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts index b77f078..d5671a8 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -105,7 +105,8 @@ export class GitCommandManager { async fetch( refSpec: string[], remoteName?: string, - options?: string[] + options?: string[], + unshallow = false ): Promise { const args = ['-c', 'protocol.version=2', 'fetch'] if (!refSpec.some(x => x === tagsRefSpec)) { @@ -113,7 +114,9 @@ export class GitCommandManager { } args.push('--progress', '--no-recurse-submodules') + if ( + unshallow && utils.fileExistsSync(path.join(this.workingDirectory, '.git', 'shallow')) ) { args.push('--unshallow')