{"_id":"grunt-githooks","_rev":"30-825a373bc241d06cb5967f1ca16e36da","name":"grunt-githooks","description":"A Grunt plugin to help bind Grunt tasks to Git hooks","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"grunt-githooks","description":"A Grunt plugin to help bind Grunt tasks to Git hooks","version":"0.1.0","homepage":"https://github.com/rhumaric/grunt-githooks","author":{"name":"Romaric Pascal","url":"http://rhumaric.com"},"repository":{"type":"git","url":"git://github.com/rhumaric/grunt-githooks.git"},"bugs":{"url":"https://github.com/rhumaric/grunt-githooks/issues"},"licenses":[{"type":"MIT","url":"https://github.com/rhumaric/grunt-githooks/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1","grunt-contrib-copy":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin"],"dependencies":{"handlebars":"~1.0.12"},"_id":"grunt-githooks@0.1.0","dist":{"shasum":"740327571d107ff309b35c3aeed9cef383a7ed75","tarball":"https://registry.npmjs.org/grunt-githooks/-/grunt-githooks-0.1.0.tgz","integrity":"sha512-w3GyAxH1nfOPLLMv0vMic2S9SjINoy+qbaz9jFksk/KTNRO/IXOpVJoDUtqZ3l4JivvB2duwaKgOoYAXhiJV8w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFh2jbtynIMFyh9NHu6UbsmGk313eNcCSG6CnQmm0UkAAiBl/dzixn/3ARlZSr1ljGGMPmRmCghKYbqnTpOCzdYvRA=="}]},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"rhumaric","email":"romaric.pascal@gmail.com"},"maintainers":[{"name":"rhumaric","email":"romaric.pascal@gmail.com"}]},"0.2.0":{"name":"grunt-githooks","description":"A Grunt plugin to help bind Grunt tasks to Git hooks","version":"0.2.0","homepage":"https://github.com/rhumaric/grunt-githooks","author":{"name":"Romaric Pascal","url":"http://rhumaric.com"},"repository":{"type":"git","url":"git://github.com/rhumaric/grunt-githooks.git"},"bugs":{"url":"https://github.com/rhumaric/grunt-githooks/issues"},"licenses":[{"type":"MIT","url":"https://github.com/rhumaric/grunt-githooks/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1","grunt-contrib-copy":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin"],"dependencies":{"handlebars":"~1.0.12"},"_id":"grunt-githooks@0.2.0","dist":{"shasum":"b5bc069a78735d2f5a2c7ea1378fbce0f7035894","tarball":"https://registry.npmjs.org/grunt-githooks/-/grunt-githooks-0.2.0.tgz","integrity":"sha512-PubAUdRGKfu/kgK5sgtoFZTaQ3jh/Jjkre3gAvq7XVQCAo8eZ8O/JrXgdrsFO7j0kL3doeOBg0SFPR1ww3rBqg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG4rwCUzls0yMTITipuwbAIZsZ3cHR/3BByb2CkRwbTgAiAL1w5zx0DErNJ2IrAHKmT4knjsUJaq2cyFjjuiYLzsxg=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"rhumaric","email":"romaric.pascal@gmail.com"},"maintainers":[{"name":"rhumaric","email":"romaric.pascal@gmail.com"}]},"0.3.0":{"name":"grunt-githooks","description":"A Grunt plugin to help bind Grunt tasks to Git hooks","version":"0.3.0","homepage":"https://github.com/rhumaric/grunt-githooks","author":{"name":"Romaric Pascal","url":"http://rhumaric.com"},"repository":{"type":"git","url":"git://github.com/rhumaric/grunt-githooks.git"},"bugs":{"url":"https://github.com/rhumaric/grunt-githooks/issues"},"licenses":[{"type":"MIT","url":"https://github.com/rhumaric/grunt-githooks/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1","grunt-contrib-copy":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin"],"dependencies":{"handlebars":"~1.0.12"},"_id":"grunt-githooks@0.3.0","dist":{"shasum":"68da4ad9575c434c3be9e8f8b35c02957d05adad","tarball":"https://registry.npmjs.org/grunt-githooks/-/grunt-githooks-0.3.0.tgz","integrity":"sha512-SNeFG/9ePHckZbGxrmYqJYovS0ND9S3VxNB4Z2clLzUkl22AzHKd62FH36xWBoZBmVljnMPBTWww4edh5C2TPg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1RyOQ95O9642qXzi9KWgdcTV4Fazmi7pei5febVI0rwIhALOf/pVtCkaZNJLGx02HzuE3R0+yI7hWBlNG975JMxdb"}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"rhumaric","email":"romaric.pascal@gmail.com"},"maintainers":[{"name":"rhumaric","email":"romaric.pascal@gmail.com"}]},"0.3.1":{"name":"grunt-githooks","description":"A Grunt plugin to help bind Grunt tasks to Git hooks","version":"0.3.1","homepage":"https://github.com/rhumaric/grunt-githooks","author":{"name":"Romaric Pascal","url":"http://rhumaric.com"},"repository":{"type":"git","url":"git://github.com/rhumaric/grunt-githooks.git"},"bugs":{"url":"https://github.com/rhumaric/grunt-githooks/issues"},"licenses":[{"type":"MIT","url":"https://github.com/rhumaric/grunt-githooks/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1","grunt-contrib-copy":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin"],"dependencies":{"handlebars":"~1.0.12"},"_id":"grunt-githooks@0.3.1","dist":{"shasum":"08103fe99eecb507d95b55329e583f24aba85b7f","tarball":"https://registry.npmjs.org/grunt-githooks/-/grunt-githooks-0.3.1.tgz","integrity":"sha512-jOrUEQ4VqQhCTWWk8zbcz/kuOS95npuFXcLtTih4CTazWnuNqTQIaR8urcl/hNDl8WvMbgHx/znttE5m7KhcKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0/P9paesdGPxJyRP0TGELLQsAaotVYJ+7xFKtVnoa+wIgexAHzWrQdpeh1JQw0DeWjELEqGENo1WI3mb54ZDBZrY="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"rhumaric","email":"romaric.pascal@gmail.com"},"maintainers":[{"name":"rhumaric","email":"romaric.pascal@gmail.com"}]},"0.4.0":{"name":"grunt-githooks","description":"A Grunt plugin to help bind Grunt tasks to Git hooks","version":"0.4.0","homepage":"https://github.com/wecodemore/grunt-githooks","author":{"name":"Romaric Pascal","url":"http://rhumaric.com"},"contributors":[{"name":"Franz Josef Kaiser","email":"wecodemore@gmail.com","url":"http://unserkaiser.com"},{"name":"Romaric Pascal","url":"http://rhumaric.com"}],"repository":{"type":"git","url":"git://github.com/wecodemore/grunt-githooks.git"},"bugs":{"url":"https://github.com/wecodemore/grunt-githooks/issues"},"licenses":[{"type":"MIT","url":"https://github.com/wecodemore/grunt-githooks/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1","grunt-contrib-copy":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","git","hook"],"dependencies":{"handlebars":"~1.0.12"},"gitHead":"7dc23a6a2d7c2c09ba76dba40a458048798a20b0","_id":"grunt-githooks@0.4.0","_shasum":"7ed3353c34b067963b84142a17d12a688f25139a","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"wecodemore","email":"wecodemore@gmail.com"},"dist":{"shasum":"7ed3353c34b067963b84142a17d12a688f25139a","tarball":"https://registry.npmjs.org/grunt-githooks/-/grunt-githooks-0.4.0.tgz","integrity":"sha512-ClvVOk346Fc5238/cKTunBmpPp40yWuZM2AYXVv/Rv1cQbvUeZr20PuO7KSApBECRgr0JuRnOzGzz+48OU7zpA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIESTYAAj7aPC2XIaRXNBpqE9ZCNI40XYqWT4Hlfg9PsqAiEArN/ntgY8y+Sr7ZzgF+BffcvAdaMfohIqfPyYpM3yLtI="}]},"maintainers":[{"name":"rhumaric","email":"romaric.pascal@gmail.com"},{"name":"wecodemore","email":"wecodemore@gmail.com"}]},"0.5.0":{"name":"grunt-githooks","description":"A Grunt plugin to help bind Grunt tasks to Git hooks","version":"0.5.0","homepage":"https://github.com/wecodemore/grunt-githooks","author":{"name":"Romaric Pascal","url":"http://rhumaric.com"},"contributors":[{"name":"Franz Josef Kaiser","email":"wecodemore@gmail.com","url":"http://unserkaiser.com"},{"name":"Romaric Pascal","url":"http://rhumaric.com"}],"repository":{"type":"git","url":"https://github.com/wecodemore/grunt-githooks"},"license":"MIT","main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1","grunt-contrib-copy":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","git","hook"],"dependencies":{"handlebars":"~1.0.12"},"gitHead":"10ae30c4564a88e963f9629f4fb10608adc965fb","bugs":{"url":"https://github.com/wecodemore/grunt-githooks/issues"},"_id":"grunt-githooks@0.5.0","_shasum":"5cddff20ee9e2d6d6aa38f9c9f1bf6c532c2cbf0","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"wecodemore","email":"wecodemore@gmail.com"},"dist":{"shasum":"5cddff20ee9e2d6d6aa38f9c9f1bf6c532c2cbf0","tarball":"https://registry.npmjs.org/grunt-githooks/-/grunt-githooks-0.5.0.tgz","integrity":"sha512-h+a47Bj1Thl/gDuRb1D28CYjwUGUf9c7G/6SWLk8dm++jxxuUpBrAwagJ7JvkKymSAmEoqmoJhRQoDy73xxbqQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFT02T4+gv/of+lliYIzHLF9n0Vaevih+wHMW+c65emvAiEAmApZRllRZuQlltJZGGkZwS+GgHLsZpCfMd9YEgBlb0Y="}]},"maintainers":[{"name":"rhumaric","email":"romaric.pascal@gmail.com"},{"name":"wecodemore","email":"wecodemore@gmail.com"}]},"0.6.0":{"name":"grunt-githooks","description":"A Grunt plugin to help bind Grunt tasks to Git hooks","version":"0.6.0","license":"MIT","homepage":"https://github.com/wecodemore/grunt-githooks","contributors":[{"name":"Franz Josef Kaiser","email":"wecodemore@gmail.com","url":"http://unserkaiser.com"},{"name":"Romaric Pascal","url":"http://rhumaric.com"},{"name":"Contributors on GitHub","url":"https://github.com/wecodemore/grunt-githooks/graphs/contributors"}],"bugs":{"url":"https://github.com/wecodemore/grunt-githooks/issues"},"author":{"name":"Romaric Pascal","url":"http://rhumaric.com"},"repository":{"type":"git","url":"https://github.com/wecodemore/grunt-githooks"},"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1","grunt-contrib-copy":"~0.4.1"},"peerDependencies":{"grunt":">=0.4.1"},"keywords":["gruntplugin","git","hook"],"dependencies":{"handlebars":"~1.0.12"},"gitHead":"f03120ac0019f058f0b8c01cc3231f888b97106c","_id":"grunt-githooks@0.6.0","_shasum":"10c6a40c537c1b6c65648c6b7edf0018a00fc3f0","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"wecodemore","email":"wecodemore@gmail.com"},"dist":{"shasum":"10c6a40c537c1b6c65648c6b7edf0018a00fc3f0","tarball":"https://registry.npmjs.org/grunt-githooks/-/grunt-githooks-0.6.0.tgz","integrity":"sha512-ggeqYcUzv8MrA46A7oDE5icMj/Glm5FkDHEoooKQrst8MRO6L23Z9GC/VBrhwQynXj+YugS9HpLOA0w1kLF93w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICntUMIMoPWWN+UJS1fQKzsp3PRmLMclZX7eQ6LfBE9pAiBdIEbygzAKK4ONJewsaPNiNdoIsfFD4TQ+1G0UHDM+OQ=="}]},"maintainers":[{"name":"rhumaric","email":"romaric.pascal@gmail.com"},{"name":"wecodemore","email":"wecodemore@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/grunt-githooks-0.6.0.tgz_1460311258154_0.9901257269084454"}}},"readme":"# grunt-githooks v0.6.0\n\n[![Build Status](https://travis-ci.org/wecodemore/grunt-githooks.svg?branch=master)](https://travis-ci.org/wecodemore/grunt-githooks)\n[![Code Climate](https://codeclimate.com/github/wecodemore/grunt-githooks/badges/gpa.svg)](https://codeclimate.com/github/wecodemore/grunt-githooks)\n[![Downloads per Month](http://img.shields.io/npm/dm/grunt-githooks.svg)](https://www.npmjs.org/package/grunt-githooks)\n\n> A Grunt plugin to help bind Grunt tasks to Git hooks\n\n## Getting Started\nThis plugin requires at least Grunt `~0.4.1`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the\n[Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to\ncreate a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and\nuse Grunt plugins. Once you're familiar with that process, you may install this\nplugin with this command:\n\n```shell\nnpm install grunt-githooks --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your\nGruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-githooks');\n```\n\n## The \"githooks\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `githooks` to the data\nobject passed into `grunt.initConfig()`.\n\n```js\ngrunt.initConfig({\n  githooks: {\n    options: {\n      // Task-specific options go here.\n    },\n    all: {\n      options: {\n        // Target-specific options go here\n      },\n      // Hook definitions go there\n    }\n  },\n})\n```\n\n#### Defining a few hooks\n\nHooks are listed as keys of your target configuration. **Any key other than\n`option`** is considered the name of a hook you want to create. The simplest way\nto define a hook is to provide a **space-separated list of the tasks you want\nthe hook to run as the value**.\n\nFor example:\n```js\ngrunt.initConfig({\n  githooks: {\n    all: {\n      // Will run the jshint and test:unit tasks at every commit\n      'pre-commit': 'jshint test:unit',\n    }\n  }\n});\n```\n\nThe plugin warns you if the name matches one of the\n[hooks announced in the Git documentation](https://www.kernel.org/pub/software/scm/git/docs/githooks.html).\nIt will still create the hook, though, in case Git introduces new hooks\nin the future.\n\n#### Hook specific options\n\nIf you need to override a few options for a given hook only, you can *use an\nObject instead of a String*.\nThe `taskNames` property will then correspond to the tasks you want to run.\nAny other key will be merged into the options.\n\n```js\ngrunt.initConfig({\n  githooks: {\n    all: {\n      options: {\n        template: 'path/to/a/template'\n      },\n      // Will bind the jshint and test:unit tasks\n      // with the template specified above\n      'pre-commit': 'jshint test:unit',\n\n      // Will bind the bower:install task\n      // with a specific template\n      'post-merge': {\n        taskNames: 'bower:install',\n        template: 'path/to/another/template'\n      }\n    }\n  }\n})\n```\n\n#### Working with existing hooks\n\nIf you happen to have existing hooks in your hook folder, the plugin *appends\nthe code launching Grunt* at the end of your hooks. You can also insert marker\ncomments in your hooks to specify exactly where you want them inserted. Your\nexisting hook would look something like this:\n\n```js\n// Some code run before Grunt starts\n\n// GRUNT-GITHOOKS START // GRUNT-GITHOOKS END\n\n// Some code run after Grunt starts\n```\n\nThe markers get automatically inserted when the plugin appends code, so hooks\nget updated cleanly the next time you run `grunt githooks`.\n\n#### Customising hook output\n\nBy default, the plugin generate NodeJS scripts for the hooks. Reasoning behind\nthis is that creating Shell scripts won't work well for people using Windows.\nPlus, NodeJS is already installed as Grunt kinda needs it. However, you're not\ntied to it and you can customise the generated script entirely. In case of\na Shell script:\n\n```js\ngrunt.initConfig({\n  githooks: {\n    all: {\n      options: {\n        // Customize the hashbang to say 'Shell script'\n        hashbang: '#!/bin/sh',\n        // Plugin comes in with a sheel script template already. Handy, innit?\n        template: './node_modules/grunt-githooks/templates/shell.hb',\n        // Customize the markers so comments start with #\n        startMarker: '## LET THE FUN BEGIN',\n        endMarker: '## PARTY IS OVER'\n      }\n    }\n  }\n});\n```\n\nIn the template, you've got access to the following variables:\n\n - *hook*: `String` with the name of the current hook\n - *command*: `String` with the name of the command to run\n - *task*: `String` with the name of the tasks to be run\n - *args*: `String` with the list of arguments to provide to the task\n - *gruntfileDirectory*: Absolute path to the directory containing the Gruntfile\n - *preventExit*: Flag telling if the hook should avoid exiting after the grunt task\n - *options*: The options provided to the grunt-githooks task to create this hook\n\n#### Extending the plugin\n\nPretty annoying when you're using a library that's missing the exact extension\npoint you need to tweak its functionalities? `grunt-githooks` is based on a lot\nof small functions and most of them are exposed so you can override them. If you\nneed feel, free to tinker with the internals (at your own risk though ;)).\nCould be something along:\n\n```js\nvar gruntGithooks = require('grunt-githooks/tasks/githooks');\n\nvar originalFunction = gruntGithooks.internals.Hook.prototype.getHookContent;\ngruntGithooks.internals.Hook.prototype.getHookContent = function () {\n  console.log('Loading content of an existing hook');\n  originalFunction.apply(this, arguments);\n};\n```\n\n### Options\n\n#### command\nType: `String`\nDefaults: `grunt`\n\nThe command that will be run by the hook. This has initally been introduced to\nallow specifying the full path to Grunt in some specific cases. It can also allow\nyou to run another command than Grunt if you need.\n\n#### taskNames\nType: `String`\n\nA space separated list of tasks that will be run by the hook.\n\n#### args\nType: `String`\n\nAdditional CLI arguments to be passed to the command run by the hook.\n\n#### hashbang\nType: `String`\nDefaults: `'#!/usr/bin/env node'`\n\nThe hashbang that will be used at the top of the hook script file. If a hook\nalready exist, the hashbang will be used to check if its ok to append/insert\ncode in it (to avoid inserting Node code in a Python hook for example).\n\n#### template\nType: `String`\n\nPath to the Handlebars template used to generate the code that will run Grunt\nin the hook. Default template is the `node.js.hb` file located in the `templates`\nfolder of the plugin. It also contains a `shell.hb` file with the template for a\nshell script hook.\n\n> **Note**: Handlebars escapes HTML special characters if you use only two curly braces to insert\n> a variable in your template. Make sure you use three `{{{my_var}}}` if you need to insert variable\n> that containt quotes, chevrons or anything that would be HTML escaped\n\n#### startMarker\nType: `String`\nDefault: `'// GRUNT-GITHOOKS START'`\n\n#### endMarker\nType: `String`\nDefault: `'// GRUNT-GITHOOKS END'`\n\n`startMarker` and `endMarker` are markers the plugin use to know where to insert\ncode if a hook already exist. If the existing hook doesn't have these markers,\nthe code will simply be appended.\n\n#### preventExit\nType: `Boolean`\nDefault `false`\n\nBy default, the inserted code will exit the process after Grunt has run, using\na -1 exit code if the task(s) failed. If you're inserting the code running Grunt\nin the middle of an existing hook, you might want to disable this so any code\nafter what was inserted by the plugin runs.\n\n#### dest\nType: `String`\nDefault value: `'.git/hooks'`\n\nThis option allows you to choose in which directory the hooks should be generated.\nComes in handy if your Gruntfile is not at the root of your Git project.\n\n\n## Contributing\n\nIn lieu of a formal style-guide, take care to maintain the existing coding style.\nPlease file a Pull Request along your issues.\n\n * Add unit tests for any new or changed functionality.\n * Lint and test your code using [Grunt](http://gruntjs.com/).\n * Keep the line length at 80-100 characters per line.\n\n### File a Pull Request\n\nThe process actually is quite simple:\n\n 1. Please check out your changes on a separate branch named `issue-{$integer}` and commit against that one.\n 1. When your tests pass and are green, merge to `dev` using `--no-ff` so we have a separate commit for that merge.\n 1. After the review on `dev`, we can merge to `master`, again using `--no-ff`.\n 1. The merge to `master` will get tagged. We use the [SemVer standard](http://semver.org), so _no_ leading `v`.\n\nIf your PR is successful, you will get added as contributor to the repo. We\ntrust you after your first PR made it into the repo and you then have access\nfor further changes, handling issues, etc. So the *important* thing is to add\nyour name to the `package.json` array of `contributors` when changing or adding\nsome code for a PR. Please do that in a separate commit.\n\n## Release History\n\nSee [Changelog](./CHANGELOG.md) for details or [the Release list](../../releases) \n(see [latest](../../releases/latest) for recent updates).\n","maintainers":[{"name":"rhumaric","email":"romaric.pascal@gmail.com"},{"name":"wecodemore","email":"wecodemore@gmail.com"}],"time":{"modified":"2022-06-18T15:05:32.696Z","created":"2013-09-01T23:29:33.573Z","0.1.0":"2013-09-01T23:29:38.762Z","0.2.0":"2013-10-05T12:05:51.885Z","0.3.0":"2013-11-14T10:04:25.275Z","0.3.1":"2013-12-17T15:17:16.580Z","0.4.0":"2015-11-17T17:16:47.242Z","0.5.0":"2016-01-06T21:08:47.216Z","0.6.0":"2016-04-10T18:00:59.200Z"},"author":{"name":"Romaric Pascal","url":"http://rhumaric.com"},"repository":{"type":"git","url":"https://github.com/wecodemore/grunt-githooks"},"users":{"ronchung":true,"cnanney":true,"jinglesthula":true,"mishelen":true,"sahilsk":true,"kempfcreative":true,"prabhash1785":true,"flozz":true,"tomwayson":true,"vergissberlin":true,"cyberx11":true},"homepage":"https://github.com/wecodemore/grunt-githooks","keywords":["gruntplugin","git","hook"],"bugs":{"url":"https://github.com/wecodemore/grunt-githooks/issues"},"readmeFilename":"README.md","contributors":[{"name":"Franz Josef Kaiser","email":"wecodemore@gmail.com","url":"http://unserkaiser.com"},{"name":"Romaric Pascal","url":"http://rhumaric.com"},{"name":"Contributors on GitHub","url":"https://github.com/wecodemore/grunt-githooks/graphs/contributors"}],"license":"MIT"}