diff --git a/dist/index.js b/dist/index.js index 795756e4d..83c6b2f38 100644 --- a/dist/index.js +++ b/dist/index.js @@ -39,6 +39,7 @@ exports.createOrUpdateBranch = exports.tryFetch = exports.getWorkingBaseAndType const core = __importStar(__nccwpck_require__(2186)); const uuid_1 = __nccwpck_require__(5840); const CHERRYPICK_EMPTY = 'The previous cherry-pick is now empty, possibly due to conflict resolution.'; +const NOTHING_TO_COMMIT = 'nothing to commit, working tree clean'; var WorkingBaseType; (function (WorkingBaseType) { WorkingBaseType["Branch"] = "branch"; @@ -138,7 +139,11 @@ function createOrUpdateBranch(git, commitMessage, base, branch, branchRemoteName if (signoff) { popts.push('--signoff'); } - yield git.commit(popts); + const commitResult = yield git.commit(popts, true); + // 'nothing to commit' can occur when core.autocrlf is set to true + if (commitResult.exitCode != 0 && !commitResult.stdout.includes(NOTHING_TO_COMMIT)) { + throw new Error(`Unexpected error: ${commitResult.stderr}`); + } } // Remove uncommitted tracked and untracked changes yield git.exec(['reset', '--hard']); @@ -674,7 +679,7 @@ class GitCommandManager { return yield this.exec(args, allowAllExitCodes); }); } - commit(options) { + commit(options, allowAllExitCodes = false) { return __awaiter(this, void 0, void 0, function* () { const args = ['commit']; if (this.identityGitOptions) { @@ -683,7 +688,7 @@ class GitCommandManager { if (options) { args.push(...options); } - yield this.exec(args); + return yield this.exec(args, allowAllExitCodes); }); } config(configKey, configValue, globalConfig) { diff --git a/src/create-or-update-branch.ts b/src/create-or-update-branch.ts index 460f43cd8..7dcd9fcdf 100644 --- a/src/create-or-update-branch.ts +++ b/src/create-or-update-branch.ts @@ -4,6 +4,7 @@ import {v4 as uuidv4} from 'uuid' const CHERRYPICK_EMPTY = 'The previous cherry-pick is now empty, possibly due to conflict resolution.' +const NOTHING_TO_COMMIT = 'nothing to commit, working tree clean' export enum WorkingBaseType { Branch = 'branch', @@ -134,7 +135,14 @@ export async function createOrUpdateBranch( if (signoff) { popts.push('--signoff') } - await git.commit(popts) + const commitResult = await git.commit(popts, true) + // 'nothing to commit' can occur when core.autocrlf is set to true + if ( + commitResult.exitCode != 0 && + !commitResult.stdout.includes(NOTHING_TO_COMMIT) + ) { + throw new Error(`Unexpected error: ${commitResult.stderr}`) + } } // Remove uncommitted tracked and untracked changes diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts index d9c91648f..87a6dd9d7 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -53,7 +53,10 @@ export class GitCommandManager { return await this.exec(args, allowAllExitCodes) } - async commit(options?: string[]): Promise { + async commit( + options?: string[], + allowAllExitCodes = false + ): Promise { const args = ['commit'] if (this.identityGitOptions) { args.unshift(...this.identityGitOptions) @@ -63,7 +66,7 @@ export class GitCommandManager { args.push(...options) } - await this.exec(args) + return await this.exec(args, allowAllExitCodes) } async config(