diff --git a/packages/cli/src/versionCommandOptions.ts b/packages/cli/src/versionCommandOptions.ts index 51799084..b74aa87a 100644 --- a/packages/cli/src/versionCommandOptions.ts +++ b/packages/cli/src/versionCommandOptions.ts @@ -173,6 +173,10 @@ export const versionCommandOptions = { group: 'Version Command Options:', type: 'boolean', }, + 'signoff-git-commit': { + describe: 'Pass the `--signoff` flag to `git commit`.', + type: 'boolean', + }, 'sign-git-tag': { describe: 'Pass the `--sign` flag to `git tag`.', group: 'Version Command Options:', diff --git a/packages/version/README.md b/packages/version/README.md index ae01d58b..0cedaecf 100644 --- a/packages/version/README.md +++ b/packages/version/README.md @@ -96,6 +96,7 @@ Running `ws-roller version --conventional-commits` without the above flags will - [`--no-private`](#--no-private) - [`--no-push`](#--no-push) - [`--preid`](#--preid) + - [`--signoff-git-commit`](#--signoff-git-commit) - [`--sign-git-commit`](#--sign-git-commit) - [`--sign-git-tag`](#--sign-git-tag) - [`--force-git-tag`](#--force-git-tag) @@ -441,6 +442,12 @@ ws-roller version prepatch --preid next When run with this flag, `ws-roller version` will increment `premajor`, `preminor`, `prepatch`, or `prerelease` semver bumps using the specified [prerelease identifier](http://semver.org/#spec-item-9). +### `--signoff-git-commit` + +Adds the `--signoff` flag to the git commit done by lerna version when executed. + +> Note: This is different from `--sign-git-commit` which is about gpg signatures. + ### `--sign-git-commit` This option is analogous to the `npm version` [option](https://docs.npmjs.com/cli/v8/using-npm/config#sign-git-commit) of the same name. diff --git a/packages/version/src/lib/git-commit.ts b/packages/version/src/lib/git-commit.ts index faa57cc5..aaf5dc69 100644 --- a/packages/version/src/lib/git-commit.ts +++ b/packages/version/src/lib/git-commit.ts @@ -9,7 +9,7 @@ import { exec } from '@ws-conventional-version-roller/core'; * @param {{ amend: boolean; commitHooks: boolean; signGitCommit: boolean; }} gitOpts * @param {import('@lerna/child-process').ExecOpts} opts */ -export function gitCommit(message, { amend, commitHooks, signGitCommit }, opts, gitDryRun = false) { +export function gitCommit(message, { amend, commitHooks, signGitCommit, signoffGitCommit }, opts, gitDryRun = false) { log.silly('gitCommit', message); const args = ['commit']; @@ -21,6 +21,10 @@ export function gitCommit(message, { amend, commitHooks, signGitCommit }, opts, args.push('--gpg-sign'); } + if (signoffGitCommit) { + args.push('--signoff'); + } + if (amend) { args.push('--amend', '--no-edit'); } else if (message.indexOf(EOL) > -1) { diff --git a/packages/version/src/versionCommand.ts b/packages/version/src/versionCommand.ts index ac52506c..12ef4396 100644 --- a/packages/version/src/versionCommand.ts +++ b/packages/version/src/versionCommand.ts @@ -82,6 +82,7 @@ export class VersionCommand extends Command { granularPathspec = true, push = true, signGitCommit, + signoffGitCommit, signGitTag, forceGitTag, tagVersionPrefix = 'v', @@ -110,6 +111,7 @@ export class VersionCommand extends Command { commitHooks, granularPathspec, signGitCommit, + signoffGitCommit, signGitTag, forceGitTag, };