Skip to content

Commit

Permalink
feat(cli): prompt user when landing PR with several commits
Browse files Browse the repository at this point in the history
  • Loading branch information
aduh95 committed Oct 14, 2021
1 parent 35d281b commit 4c55189
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
5 changes: 5 additions & 0 deletions components/git/land.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ const landActions = {
'other commit messages',
default: false,
type: 'boolean'
},
allowMultipleCommits: {
describe: 'Switch default answer if the pull request more than one commit',
default: false,
type: 'boolean'
}
};

Expand Down
26 changes: 23 additions & 3 deletions lib/landing_session.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,17 @@ const LINT_RESULTS = {
};

class LandingSession extends Session {
constructor(cli, req, dir,
{ prid, backport, lint, autorebase, fixupAll, checkCI } = {}) {
constructor(cli, req, dir, {
prid, backport, lint, autorebase, fixupAll,
checkCI, allowMultipleCommits
} = {}) {
super(cli, dir, prid);
this.req = req;
this.backport = backport;
this.lint = lint;
this.autorebase = autorebase;
this.fixupAll = fixupAll;
this.allowMultipleCommits = allowMultipleCommits;
this.expectedCommitShas = [];
this.checkCI = !!checkCI;
}
Expand All @@ -40,6 +43,7 @@ class LandingSession extends Session {
args.lint = this.lint;
args.autorebase = this.autorebase;
args.fixupAll = this.fixupAll;
args.allowMultipleCommits = this.allowMultipleCommits;
return args;
}

Expand Down Expand Up @@ -349,7 +353,9 @@ class LandingSession extends Session {
}

async final() {
const { cli, owner, repo, upstream, branch, prid } = this;
const {
cli, owner, repo, upstream, branch, prid, allowMultipleCommits
} = this;

// Check that git rebase/am has been completed.
if (!this.readyToFinal()) {
Expand All @@ -360,6 +366,20 @@ class LandingSession extends Session {
};

const stray = this.getStrayCommits();
if (stray.length > 1) {
const forceLand = await cli.prompt(
'There are more than one commit in the PR. ' +
'Do you still want to land it?',
{ defaultAnswer: allowMultipleCommits });

if (!forceLand) {
cli.info(
'Use --fixupAll option, squash the PR manually or land the PR from ' +
'the command line.'
);
process.exit(1);
}
}
const strayVerbose = this.getStrayCommits(true);
const validateCommand = path.join(
__dirname,
Expand Down

0 comments on commit 4c55189

Please sign in to comment.