Grunt task to add version and Git's revision information to your project files.
The idea is to use the current Git commit count as the revision number and combine it with the version string from your package.json
.
We use the following command to determine Git's "revision" number:
git rev-list --count HEAD
Whenever a user/client comes back and tells you there is a bug in "revision" 1302 you could use the following Git alias:
[alias]
show-rev-number = !sh -c 'git rev-list --reverse HEAD | nl | awk \"{ if(\\$1 == "$0") { print \\$2 }}\"'
Using git show-rev-number 1302
will print the hash for "revision" 1302
This plugin requires Grunt ~0.4.2
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-gitrevision --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-gitrevision');
In your project's Gruntfile, add a section named gitrevision
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
gitrevision: {
options: {
prefix: '[^\\-]version[\'"]?\\s*[:=]\\s*[\'"]'
},
your_target: {
files: {
'tmp/testing.js': ['test/fixtures/testing.js']
}
},
},
});
Type: String
Default value: '[^\\-]version[\'"]?\\s*[:=]\\s*[\'"]'
A string value representing a regular expression to identify the preceding part of the actual version information.
Type: String
Default value: '-r'
A string value prefixing the revision number.
Type: String
Default value: ''
A string value which should be appended to the revision information.
In this example, the default options are used to replace the version part var version = '0';
from file test/fixtures/testing.js
. So, if the input file contains the appropriate pattern the task will replace it with the actual version information and writes the new content to the specified output file tmp/testing.js
.
gitrevision: {
default_options: {
files: {
'tmp/testing.js': ['test/fixtures/testing.js']
}
}
}
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.