- 
                Notifications
    
You must be signed in to change notification settings  - Fork 111
 
[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.txtand dependencies insetup.py, deduplicate -  User-defined 
OutputFormatterclasses to allow users to specify the format of the output. Would allow us to easily implement #45 and #53.- 
OutputFormatterclasses 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.defaultcan be a string and/or a lambda that implements more complex logic like returning from environment config. -  New Rule: ConfigRule: 
git configcommands- This can just be implemented as a commit rule that just runs a 
_gitcommand (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.editorfor commit msg editing instead of only falling back tovimif$EDITORisn'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 
--commitflag: #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_py2utility method/variable for checking python2 togitlint.utilsand 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_commentcharfunction 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 
--debugis 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: 
--targetparameter-  Take the 
--targetparameter into account for--install-hookand--uninstall-hookoptions - 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 -  
--configparameter 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-configin git commit messages to set any config - Allow additional config to be set by 
GITLINT_CONFIGenvironment variable. This allows config to be set that is system/user specific. 
 - Support 
 - 
Reporting:
-  
--summaryoption: print out a summary at the end. Contains: number/type or errors -  
--countoption: 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