https://github.com/jryio/commit-comments
Build commit message in the comments of your code
https://github.com/jryio/commit-comments
comment commits git hooks messages
Last synced: 3 months ago
JSON representation
Build commit message in the comments of your code
- Host: GitHub
- URL: https://github.com/jryio/commit-comments
- Owner: jryio
- License: mit
- Created: 2016-01-07T17:54:24.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2016-02-16T03:52:52.000Z (over 9 years ago)
- Last Synced: 2025-04-14T17:16:42.458Z (6 months ago)
- Topics: comment, commits, git, hooks, messages
- Language: Shell
- Homepage:
- Size: 14.6 KB
- Stars: 309
- Watchers: 9
- Forks: 9
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Commit Comments
Commit Comments automatically create a bulleted list of changes from comments in your code. Write comments using `@commit` keyword, and they will be added to your commit message when it's time to commit.
It works by using two [Git hooks](https://www.kernel.org/pub/software/scm/git/docs/githooks.html) (**prepare-commit-m sg** and **post-commit**) to
search your repository for @commit comments and construct a clean list of
changes.Once you've successfully committed, @commit comments are removed from
your files### Installation
Clone the repository and move the `prepare-commit-msg` and `post-commit` files.
```
$ git clone https://github.com/thebearjew/commit-comments.git
$ cd commit-comments
$ chmod a+x prepare-commit-msg post-commit
$ cp prepare-commit-msg post-commit your-repository/.git/hooks
```### Usage
As you're writing code, drop `// @commit` comments anywhere a significant change has been made.
Commit comments work with (inline & standalone):
- C-like comments (C/C++, Java, JavaScript, etc.) `//`, `/* */`
- Python/Ruby/Perl `#`
- Assembly `;`Example:
```js
foo.js// @commit: Added a parameter to helloWorld function
function helloWorld(phrase) {
console.log('Hello World + ' + phrase); /* @commit - Concatenated strings */
}
```Output in Git commit message
```
# Commit title goes here- [foo.js#1] Added a parameter to helloWorld function
- [foo.js#3] Concatenated strings
# Changes to be committed:
# modified: foo.js
#
# Changes not staged for commit:
# ...
```Comments are removed from the original files.
```js
foo.js - after commitfunction helloWorld(phrase) {
console.log('Hello World + ' + phrase);
}
```### Ignoring Files
To ignore some files from being searched, create a `.ccignore` file in your repository and add file names/types.```
README.md
build.sh
.cpp
```### Dependencies
1. **GNU sed** is required to remove @commit comments in post-commit.On Mac OS X, the default sed is from the FreeBSD distribution. To download the GNU sed version, use [Brew](http://brew.sh)
```
$ brew install gnu-sed --with-default-names
```Without the `--with-default-names` option, the command will be downloaded as `gsed`.
2. **pcregrep** is the primary search utility due to its widespread
portability.If pcregrep is not available, GNU grep is used (for Perl RegEx & variable
lookback).### Contributing & Todo
Contributions to improve simplicity/resolve compatibility would be preferred. If there are useful improvements, tricks, or hacks, please submit a Pull Request and a directory of add-ons and snippets will be created.**TODO**
- [x] Add filename and line number to bulleted commit commets - [suggestion by
joncalhoun](https://news.ycombinator.com/item?id=10904142) on HN
- [ ] Use `git diff --cached --name-status --diff-filter=ACM` in place of `git
ls-files`
- [ ] Develop more test cases (finding edge cases with grep expression)
- [ ] Rewrite sed commands to be POSIX (BSD) compatible regular expressions
- Create more robust regular expression for validating comment syntax
- [ ] Check for multiline block comments
- [ ] Check for closing comment symbols (positive look aheads)
- Programming Languages
- [ ] HTML
- [ ] Fortran
- [ ] AppleScript--
Special Thanks to Bryan Wyatt for feedback and bug fixes - [@brwyatt](https://twitter.com/brwyatt)