Commit graph

33 commits

Author SHA1 Message Date
Henrik Lissner
2132d60062 dev(ci): permit short bump/revert commit messages 2021-12-13 18:48:59 +01:00
Henrik Lissner
bac7ccb970 dev(ci): minor refactor & reformatting 2021-11-04 01:43:50 +01:00
Henrik Lissner
710eab10c7 dev(ci): suppress summary length warnings for bump/revert commits 2021-11-04 01:43:10 +01:00
Henrik Lissner
d6262dd287 dev(ci): check all module dirs for valid scopes
Will become relevant once Doom's modules have been moved to their own
repo.
2021-11-04 01:42:43 +01:00
Itai Y. Efrat
aa2f806b5b dev(ci): fix false negative in commit linter
The one value allowed per trailer check shouldn't apply to names since
they often have spaces.
2021-10-30 19:09:50 +03:00
Itai Y. Efrat
ea18315d08 dev(ci): allow periods in names in commit linter
For initials.
2021-10-30 17:51:28 +03:00
Henrik Lissner
2eaa508121 dev(ci): fix false positive invalid trailers 2021-10-28 14:32:36 +02:00
Henrik Lissner
e4aecd1a5a dev(ci): refactor & update commit linter
This generalizes and cleans up the linter API so that it can be used in
other Doom projects (or CLI commands, like our WIP changelog generator).

Besides that, our git's commit conventions saw two changes:
- A new 'Amend' keyword, for indicating a commit corrects an earlier,
  recent one. This should be used to omit (or merge) commits in the eyes
  of the changelog generator.
- Trailers must now follow the 'KEY: VALUE' format, which is supported
  OOTB by 'git interpret-trailers' and makes scraping them much eacher.
  Before, omitting the colon was mandatory, this is no longer the case.

Other highlights:
- For linter rules: replaced :footer and :refs keys with :trailers (a
  string->string alist). Invalid trailers will be left in BODY's tail.
- Added a linter for colon delimiters in commit trailers (along with
  other formatting checks, like capitalization and one-per-line checks).
2021-10-20 21:37:09 +02:00
Henrik Lissner
6bd7ec7579 dev(ci): generalize commit parser
These will be useful for our various CI facilities later. E.g. our
conventional changelog generator and package bumper CI/CD.
2021-10-18 12:09:42 +02:00
Henrik Lissner
1a86b0fc0f fix(cli): deploy git hooks to correct directory
'doom install' now consults git to find the hooks directory, which will
work for users who have Doom as a submodule (#5632).

Fix #5632
2021-10-18 01:15:54 +02:00
Henrik Lissner
3854c2fd70 dev(ci): deploy git hooks on 'doom install' 2021-10-10 18:36:46 +02:00
Henrik Lissner
0b07264619 dev(ci): allow capitalization in revert commits
In case you're reverting an old commit, from before we adopted our git
conventions.
2021-10-06 01:30:45 +02:00
Henrik Lissner
49c94dc78c docs(ci): document doom-cli-commit-rules 2021-09-30 15:06:34 +02:00
Henrik Lissner
e9b13393eb dev(ci): fix commit linter receiving empty summary
split-string is not side-effect free. It changes the match data (it uses
regexp to split strings).
2021-09-30 15:06:34 +02:00
Henrik Lissner
1cbd1e14e1 dev(ci): fix commit hash length linter
- Now counts and reports all commit references that aren't the correct
  length, not just the first.
- Now reports all incorrect references, not just the first on each line.
2021-09-29 18:26:10 +02:00
Henrik Lissner
002711ff9b dev(ci): add pre-push git hook
To complain about lingering fixup/squash commits.
2021-09-26 14:35:53 +02:00
Henrik Lissner
dc3eb8a7cf dev(ci): ignore fixup!/squash!/wip commits
Otherwise the commit linter makes rebasing impossible without
--no-verify, or in magit if the git hooks are installed.
2021-09-26 14:35:53 +02:00
Henrik Lissner
2a0aa3d15b dev(ci): fix scope checker in commit linter
- Linter wasn't failing on any invalid scopes due to logic error.
- Linter was failing to recognize module categories as valid
  scopes (e.g. :lang, :ui, etc).
- Adds 'ci' and 'lib' as valid scopes.
2021-09-24 12:37:50 +02:00
Henrik Lissner
14729d21d1 dev(ci): refactor commit message reader for linter 2021-09-17 09:10:37 +02:00
Henrik Lissner
f80eed41bb dev(ci): fix linter complaining about git Ref lines
Such as Co-authored-by: and Signed-off-by: lines.
2021-09-17 09:10:14 +02:00
Henrik Lissner
5aeefc301b dev(ci): fix linter error on tail-less commit msg
If the commit message lacked the diff post-amble, 'doom ci
hook-commit-msg' would throw an out-of-range error.
2021-09-17 09:05:53 +02:00
Henrik Lissner
b3c01226a1 dev(ci): fix linter warning count 2021-09-17 09:05:42 +02:00
Henrik Lissner
650f7a82e3 dev(ci): refactor commit linter
A new approach to make linter rules more flexible.
2021-09-16 20:20:10 +02:00
Henrik Lissner
abc16ef68c refactor(cli): make all searches case-sensitive
This is more predictable, and is safe as a global default in CLI
sessions (but not in interactive ones). This indirectly fixes case
insensitivity in our commit linter rules.
2021-08-05 12:53:20 -04:00
Henrik Lissner
a3f917c42d dev: fix off-by-one for line length rule 2021-08-04 10:46:10 -04:00
Henrik Lissner
3beff3133f dev: refactor, fix, and add rules to commit linter
- Conform commit linter to 50/72 rule
- Add linter rule for body line length; excludes the footer and lines
  with long URLs.
- Add linter rule for validating scopes are in lexical order.
- Add linter rule for validating footer refs.
  Footer references should reference one thing per line. That thing can
  be one of:
  - An URL.
  - An issue or PR reference (local or remote).
  - A 12-character commit hash (local or remote).
- Extend linter to detect new scopes for docs:
  - Commits of type 'docs' can now use these additional scopes (in
    addition to other possible scopes):
    - docs(install) -> for changes to our installation guide(s). It is
      expected for this to change so often that it has its own scope.
    - docs(X) -> where X is the basename of any org file in docs/*.org.
      e.g.
      - docs(index): ...
      - docs(modules): ...
      - docs(faq): ...
- Modify the scope checker to consider *any* parenthetical scope given
  for bump, revert, merge, module, or release commits to be invalid.
- Update bump commit linter for 12c hashes (see 3bedae38dd).
- Fix language in imperative ref linter warning.

Ref https://discourse.doomemacs.org/how2commit
Ref 3bedae38dd
2021-08-03 23:00:43 -04:00
Henrik Lissner
74f72c15b3 dev: fix commit linter target and lint all commits
- Was formerly processing the internal merge commit, which never conforms
  to our conventions, but is also unrelated to the work at hand.
- Now lints the range of commits applicable to the event, and not just
  the latest commit.
2021-08-02 15:00:53 -04:00
Henrik Lissner
5df31a4895 dev: fix and refactor commit lint rules
- Fix rules that weren't working due to faulty logic.
- Revise linter messages for clarity and concision.
- Use conventional commit nomenclature: summary -> subject
- case-fold-search = nil, to ensure case sensitive searches
- Exclude bump type from length checks
2021-08-01 23:37:36 -04:00
Henrik Lissner
11a0c0cbdb dev: add linter rule for commit capitalization
Bad:  'fix(abc): Prevent freezes'
Good: 'fix(abc): prevent freezes'
2021-08-01 23:37:36 -04:00
Henrik Lissner
5d1d0fc7c9 dev: add linter rule for Refs: in commit footer
+ No colon.
+ One ref per line.

Bad:
  Refs: A B C
  Ref: X Y
  Ref: Z
Good:
  Ref A
  Ref B
  Ref C
  Ref X
  Ref Y
  Ref Z
2021-08-01 23:37:36 -04:00
Henrik Lissner
3d423862d7 dev: add linter rules for module type
Recently added 'module' to our list of git commit types to represent
changes to our module list. These events are important enough to
Doom (and users) to track separately.
2021-08-01 11:43:01 -04:00
Henrik Lissner
345ff621c3 dev: link to gist for commit docs
Until the new docs are up, link to the gist.
2021-08-01 02:03:36 -04:00
Henrik Lissner
074b9eb0d1 dev: add commit linter workflow
Experimenting with an internal linter. Only trouble is, if Doom's CLI is
ever in a broken state, a contributor will have to know about
--no-verify option for git commit. This can be improved post CLI
rewrite.
2021-07-31 23:51:27 -04:00