commitlint icon indicating copy to clipboard operation
commitlint copied to clipboard

Plugins should be provided with git diff

Open spaceribs opened this issue 3 years ago • 2 comments

This is a feature request to provide the output of changed files, such as git diff --cached --name-only --diff-filter=ACM. The purpose of this feature is to provide a way to verify if changes described within a conventional commit's scope are actually all within that scope.

Expected Behavior

Naive example:

plugin: {
  rules: {
    'bounded-scope': (parsed) => {
      console.log(parsed.diff);
      const scope = parsed.scope;

      if (scope === 'test1') {
        changedStartsWithScope = parsed.diff.every((path) => path.startsWith('apps/test1'));
        return [changedStartsWithScope, 'all files with scope test1 should start with apps/test1'];
      }

      return [true];
    }
  }
}

echo "feat(test1): random subject" | npm run commitlint
[ '.gitignore', 'apps/test1/testing.js' ]
â§—   input: feat(test1): random subject
✖   all files with scope test1 should start with apps/test1 [scope-bounded]

✖   found 1 problems, 0 warnings

Current Behavior

No way of determining which files have been changed by the commit.

Affected packages

  • [ ] cli
  • [x] core
  • [ ] prompt
  • [ ] config-angular

Context

I'm trying to create a plugin which queries Nx to determine if the changes in the commit match the scope provided, otherwise requiring you to not specify a scope.

spaceribs avatar Oct 17 '22 22:10 spaceribs

Hello @escapedcat didn't see much progress on this one. Just kindly asking, do you still consider adding this feature?

mapleeit avatar Aug 26 '25 10:08 mapleeit

Sure, if someone provides a PR

escapedcat avatar Aug 26 '25 10:08 escapedcat