-
Notifications
You must be signed in to change notification settings - Fork 101
[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.
- Don't have both
requirements.txt
and dependencies insetup.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 (orGitContext.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.
- This can just be implemented as a commit rule that just runs a
- Respect git config
core.editor
for commit msg editing instead of only falling back tovim
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 :-) )
- Add
--commit
flag: #141 - Merge some open PRs and issues
- Upgrade dependencies
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
- 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 togitlint.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
)
- 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
- 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
- Being evaluated, might be slower for development
- 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), ...
- 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
- Unit and integration tests for
--commits
- Logger that logs info when
--debug
is enabled
- Python 3.6 support
- Specify the commit id of the commit to lint, e.g.
--commits {revspec}
, also see https://github.com/jorisroovers/gitlint/issues/14
- 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.
- 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
- 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
- Take the
- 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
-
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
- 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.:
-
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.
- Support
-
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