tiquette v1.0.3
Tiquette
Tiquette is a tool for automatically formatting your commit messages with a ticket or issue number. If your development process requires a reference to tickets in commit messages, then this is the tool for you!
Usage
Tiquette works by creating a Git branch with a ticket number in the name, and then automatically inserting that ticket number into your commit messages while you're on that branch.
To get started, check out a new branch and give it your ticket number:
$ npm run branch FOO-123You'll then be prompted to enter a branch name, which will default to the ticket's title (fetched via your project management system's API):
prompt: Brief description (default: "Fix all the things!!!"):Press Enter, and a new branch will be created. In the example above, if you used the default description, the branch would be named FOO-123--Fix-all-the-things. (The two dashes after the ticket number help Tiquette know where the ticket number ends.)
While on this branch, Tiquette will format every commit message to include the ticket number in your branch name!
$ git commit -m "Fix one of the things"
[FOO-123] Fix one of the thingsSetup
Installation
- If you're using Yarn:
yarn add tiquette --dev - Or if you're using NPM:
npm install tiquette --save-dev
Configure Tiquette in your package.json
{
"tiquette": {
"commitMessageTemplate": "[{{ticket}}] {{message}}",
"type": "JIRA"
}
}commitMessageTemplateallows you to specify how your ticket number should appear in your commit messages using Mustache-style placeholders. Given the template above, if you write a commit message likeFix one of the things, the final commit message will be[FOO-123] Fix one of the things.typeallows you to specify what ticket type to use. Currently, this can be eitherGitHuborJIRA.
(Optional) Configure API details in .tiquetterc
The API details for your project management tool are used to fetch ticket names to automatically generate branch names. If you don't need this functionality, you can safely skip this step.
Tiquette uses the rc NPM module to load configuration from a .tiquetterc file. This configuration shouldn't be checked into your version control system, and is used to fetch ticket names from your project management tool.
The file should be written in INI or JSON format, and the contents differ based on the value of tiquette.type in your package.json.
For JIRA
{
"authorization": "Basic c3Rlcmxpbmc6YXJjaGVy",
"host": "http://my-jira-instance.example.com"
}authorizationis the content of theAuthorizationheader when talking to the JIRA API, which is needed for fetching issue titles. Per JIRA's API documentation, this should be the stringBasicplus your colon-separated username and password, Base64-encoded.hostis the host (without trailing slash) of your JIRA instance. Currently, only version 2 of the JIRA REST API is supported.
For GitHub
{
"authorization": "Basic c3Rlcmxpbmc6YXJjaGVy",
"host": "http://my-github-instance.example.com",
"owner": "groupon",
"repo": "nlm"
}authorizationis the content of theAuthorizationheader when talking to the GitHub API, which requires your personal access token for fetching issue titles.hostis the host of your GitHub instance, and is only required if you're using GitHub Enterprise. (Otherwise, it will default to GitHub.com.)ownerandreporefer to the owner and repo names. For example, in a repo located atgithub.com/groupon/nlm,grouponwould be the owner andnlmwould be the repo.
Install Tiquette's branch script and commitmsg hook
{
"scripts": {
"branch": "tiquette branch",
"commitmsg": "tiquette commit-message $GIT_PARAMS"
}
}- The
branchscript should be called with a ticket number:npm run branch FOO-123. If you've configured API details in.tiquetterc, it will hit this API to get the ticket's name, and prompt you to use that name or a different one for your branch. It will then create a branch with the ticket number and the name you specify (normalized into letters and hypens). - The
commitmsghook allows Tiquette to automatically format your commit messages using Husky.
Then, you're all set! Your commit messages will automatically have ticket numbers in them in the format specified.
Development
- Install dependencies with
yarn. - Run tests with
npm test. - Prettify code (using Prettier) with
npm run prettify.
License
Copyright 2017 Groupon, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.