Skip to content

[ARCHIVE] Roadmap

Joris Roovers edited this page Mar 7, 2023 · 1 revision

This page is no longer maintained, but kept here for historic reference. Please refer to our Kanban Board to get an idea of our roadmap

NOTE: There's a bunch of ideas under the Future section at the bottom of this page. I tend to change my mind on these things on-the-fly as I'm working, so if you have a particular interest in one of these items, it's best to open an issue.

0.16.0 (Future)

  • Don't have both requirements.txt and dependencies in setup.py, deduplicate
  • User-defined OutputFormatter classes to allow users to specify the format of the output. Would allow us to easily implement #45 and #53.
    • OutputFormatter classes would just be found in the --extra-path
  • GitContext.config(name, default=None, use_cache=True) method for easy access to git config (that is also cached). Optionally also provide a mechanism for easy fallback. E.g. default can be a string and/or a lambda that implements more complex logic like returning from environment config.
  • New Rule: ConfigRule: git config commands
    • This can just be implemented as a commit rule that just runs a _git command (or GitContext.config - see above) to pull the value and then compare it to a given regex. By using named rules, users can implement multiple of such rules.
  • Respect git config core.editor for commit msg editing instead of only falling back to vim if $EDITOR isn't set
  • gitlint GH action
  • Attempt to fix coveralls.io integration with Github Actions (see https://github.com/jorisroovers/gitlint/blob/master/.github/workflows/checks.yml#L51-L60)
  • Unit Tests: fix running on Windows (try again :-) )

0.15.2 (Next)

  • Add --commit flag: #141
  • Merge some open PRs and issues
  • Upgrade dependencies

0.15.0 (2020-11-27)

This release will not bring new features, just drop support for older python versions

  • Drop support for python 3.5 and 2.7
  • Update dependencies to latest

0.14.0 (2020-10-24)

  • Release it!
  • Re-implement the git commit message hook in Python. Solves #94, makes for easier testing, supporting different shells and just better in general
  • #126: Ignore Line rule
  • #113: Allow multiple instances of the same rule
  • #138: Min-title-length rule
  • #130: body-match-regex
  • Example of using LOG in user-defined rules, maybe give rules a LOG property by default (implemented in gitlint.rules.Rule)
  • assertRaisesRegex not working as expected, look into it!
  • userdefined configuration rules
  • Bugfix: StrOption that is None for Regex
  • RegexOption
  • Debug:
    • log all git commands
    • log gitlint.util.DEFAULT_ENCODING
  • Add is_py2 utility method/variable for checking python2 to gitlint.utils and use it everywhere where we perform the check
  • Unit Tests: add equality tests for LintConfig
  • Windows: fallback on using UTF-8 in case of unicode decoding exception
  • Commit Hook: Fixes for default scenario
  • Enable parameters via envvars (e.g. debug: GITLINT_DEBUG)

0.13.0 (2020-02-25)

  • Release it!
  • Revert commits #99
  • Python 3.8 support
  • Determine git branches: #108
  • Make LocalGitContext which does on-demand loading+caching of the git context, similar to how GitCommit does it. This would allow for efficient fetching additional information from the current local git repo like: current active branch, git config values, and more. The git_commentchar function is actually an existing example that would fit this use-case
  • Fix staged files: #105
  • Consider using black for formatting -> decided not to for now, don't 100% like the defaults (should document this better, since it's likely this will be revisited)
  • Refactor rules out of the LintConfig -> RuleCollection?
  • Tests Cleanup
  • Doc updates (better document sample config)
  • Docker image for users
  • Explore github marketplace, use GH actions
  • General Code Cleanup
  • Fix debug output: branches, changed_files
  • Fix gitcontext (in)equality tests + extend equality check to include new attributes

0.12.0 Release (2019-07-15)

  • Drop python 3.3 support
  • Ascii cinema gif
  • Add pypy3 support
  • Github issue templates
  • git_commentchar -> does it need support for target dir? #59,#70
  • Test and merge #89, close #87
  • Add link to docs in CLI help/debug
  • Move test running to docker
  • Replace all instances of abspath with realpath, remove hardcoded forward slashes (for future windows compatibility)
  • Add Contrib Rule for ConventionalCommits #84
  • Update (test) dependencies (incl PyPy version)
  • Have a set of "contrib" rules: rules that are user-contributed and/or are not useful for everyone. These are disabled by default and need to be explicitly enabled (e.g.: Sign-Off-By).
  • Docs for contrib rules
  • Git worktree fix #68
  • Update docs: typo fixes, pre-commit clarifications (#86), ...

0.9.0 Release

  • More debug statements [DONE]
  • Rules for different attributes of the the commit message: author [DONE]
  • Fix remaining bugs related to --commits [DONE]
  • In https://github.com/jorisroovers/gitlint/blob/master/gitlint/git.py, we need to create a GitCommand context handler that can uniformly deal with exception handling for all git command execution

0.8.2 Release

  • Unit and integration tests for --commits
  • Logger that logs info when --debug is enabled

0.8.1

0.8.0

  • Refactor/rethink rule class hierarchy (also take into account new classes: MetaRule, UserDefinedRule)
  • User defined rules
  • Proper unicode support
  • Important bugfixes
  • Package build tests
  • Pylint coverage on all python versions + part of testing in travis
  • Print rules and their options as part of debug mode
  • Dependency package bump to latest versions
  • Configuration normalization: Configuration "engine" needs a rewrite to properly deal with all use-cases.

0.7.0

  • Developer convenience:
    • Integration tests
  • Bugfixes:
    • Support for Attlassian SourceTree
    • Hook fix: remove -e option from read
    • Print commit message on abort (or allow to edit)
  • Support for python 2.6
  • Ignore merge commits
  • Documentation:
    • link to asciinema demo of gitlint on gitlint github page
    • mention .gitlint config on the doc homepage and reference the Configuration page (that page is currently not referenced from the docs homepage)
    • gitlint generate-config on the Configuration documentation page

0.6.0

  • color output for commit hook
  • Work on a different git repo than the current directory: --target parameter
    • Take the --target parameter into account for --install-hook and --uninstall-hook options
    • Change the error message when the target directory is not a git repo depending on whether it's the current dir or not
  • Generate a .gitlint config file: --generate-config
  • --config parameter should only accept files, currently also accepts directories
    • Update ASCII CINEMA with latest version
  • Add line to docs indicating that docs only apply to latest version on pypi
  • Add python 2.7-3.4,3.5 badge on github page

Future ideas

  • Consider using MyPy type checking

  • Consider converting run_tests.sh to https://github.com/pyinvoke/invoke

  • Rules for different attributes of the the commit message: date, etc

  • Determine dev versions based on git-sha

  • Expected files based on yaml (that also check exit_code in test_cli)

  • More rules:

    • Checkbox rules: Developers must add a line to the end of the commit specifying that they've considered a number of aspects when committing the code. E.g.: gitlint-checks: tests, documentation. This can be useful as a reminder if developers often submit code without updating the documentation or tests.
    • max-lines-change: Maximum lines of change in a single commit (-1 = unlimited)
    • Author rules: Disallowed user names (empty, whitespace, nobody, etc)
    • Allowed branches: enforce things like git-flow
    • Consider adding the BranchNamingConventions example as a built-in or contrib rule
  • More rule options:

    • title-must-not-contain-word: case sensitive match
    • title-trailing-punctuation: define punctuation
    • int options should have min and max allowed values (this can be especially useful for when we implement user defined rules)
  • Rule improvements:

    • body-changed-file-mention: list all files/directories that need to be mentioned as part of the violation
    • body-changed-file-mention: distinction between change file and directory in output
  • Git hooks:

    • appending to an existing hook (after user confirmation)
  • Configuration

    • Support gitlint-config in git commit messages to set any config
    • Allow additional config to be set by GITLINT_CONFIG environment variable. This allows config to be set that is system/user specific.
  • Reporting:

    • --summary option: print out a summary at the end. Contains: number/type or errors
    • --count option: only print out the number of violations
    • --report: html report
    • INFO report: After linting, gitlint optionally prints some stats (e.g.: This is Joris' 10th commit, totalling 300 lines of change). -> this can be implemented using a ReportingRule.
  • Misc:

    • Extra verbose mode (vvvv): add links to rule violations with more details
    • Improve parsing of messages that are piped into gitlint. Currently we can't extract author name, author email, date, etc from that email
    • reimplement commit-msg hook in gitlint instead of doing the logic in bash (advantages: more easily unit test, more cross platform and cross shell, easier to use more complex logic in python).
  • Autocorrect messages