Permalink
Switch branches/tags
v2.2.0-alpha.00000000 v2.1.0-beta.20181015 v2.1.0-beta.20181008 v2.1.0-beta.20181001 v2.1.0-beta.20180924 v2.1.0-beta.20180917 v2.1.0-beta.20180910 v2.1.0-beta.20180904 v2.1.0-beta.20180827 v2.1.0-alpha.20180730 v2.1.0-alpha.20180702 v2.1.0-alpha.20180604 v2.1.0-alpha.20180507 v2.1.0-alpha.20180416 v2.1.0-alpha.00000000 v2.0.6 v2.0.6-rc.1 v2.0.5 v2.0.4 v2.0.3 v2.0.2 v2.0.1 v2.0.0 v2.0-rc.1 v2.0-beta.20180326 v2.0-beta.20180319 v2.0-beta.20180312 v2.0-beta.20180305 v2.0-alpha.20180212 v2.0-alpha.20180129 v2.0-alpha.20180122 v2.0-alpha.20180116 v2.0-alpha.20171218 v2.0-alpha.20171218-plus-left-join-fix v1.2-alpha.20171211 v1.2-alpha.20171204 v1.2-alpha.20171113 v1.2-alpha.20171026 v1.2-alpha.20170901 v1.1.9 v1.1.9-rc.1 v1.1.8 v1.1.7 v1.1.6 v1.1.5 v1.1.4 v1.1.3 v1.1.2 v1.1.1 v1.1.0 v1.1.0-rc.1 v1.1-beta.20170928 v1.1-beta.20170921 v1.1-beta.20170907 v1.1-alpha.20170817 v1.1-alpha.20170810 v1.1-alpha.20170803 v1.1-alpha.20170720 v1.1-alpha.20170713 v1.1-alpha.20170629 v1.1-alpha.20170622 v1.1-alpha.20170608 v1.1-alpha.20170601 v1.0.7 v1.0.6 v1.0.5 v1.0.4 v1.0.3 v1.0.2 v1.0.1 v1.0 v1.0-rc.3 v1.0-rc.2 v1.0-rc.1 v0.1-alpha beta-20170420 beta-20170413 beta-20170406 beta-20170330 beta-20170323 beta-20170309 beta-20170223 beta-20170216 beta-20170209 beta-20170126 beta-20170112 beta-20170105 beta-20161215 beta-20161208 beta-20161201 beta-20161110 beta-20161103 beta-20161027 beta-20161013 beta-20161006 beta-20160929 beta-20160915 beta-20160908 beta-20160829 beta-20160728
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
executable file 76 lines (66 sloc) 2.26 KB
#!/usr/bin/env bash
#
# Prepare the commit message by adding a release note.
set -euo pipefail
if [[ "${2-}" = "message" ]]; then
# This git command is non-interactive so it will not filter out any comments
# we add. There is nothing more for us to do.
exit 0
fi
give_up() {
echo "prepare-commit-msg: $@" >&2
exit 0 # exit with successful status to allow the commit to proceed
}
# Git can be configured to use any character as the comment indicator. See the
# core.commentChar Git option. We can deduce what comment character is in effect
# by looking for text that we know will be preceded by the comment character.
if ! cchar=$(grep "^. Please enter the commit message for your changes." "$1" | head -c1); then
give_up "unable to determine comment char"
fi
if ! tempfile=$(mktemp); then
give_up "failed to create temporary file"
fi
trap "rm -f $tempfile" EXIT
# Inject commit message recommendations into the commit message help text.
sed_script="/$cchar.*an empty message aborts the commit./a\\
$cchar\\
$cchar Commit message recommendation:\\
$cchar\\
$cchar ---\\
$cchar <pkg>: <short description>\\
$cchar\\
$cchar <long description>\\
$cchar\\
$cchar Release note (category): <release note description>\\
$cchar ---\\
$cchar\\
$cchar Wrap long lines! 72 columns is best.\\
$cchar\\
$cchar The release note must be present if your commit has user-facing\\
$cchar changes. Leave the default above if not.\\
$cchar\\
$cchar Categories for release notes:\\
$cchar - cli change\\
$cchar - sql change\\
$cchar - admin ui change\\
$cchar - general change (e.g., change of required Go version)\\
$cchar - build change (e.g., compatibility with older CPUs)\\
$cchar - enterprise change (e.g., change to backup/restore)\\
$cchar - backwards-incompatible change\\
$cchar - performance improvement\\
$cchar - bug fix\\
"
# Add an explicit "Release note: None" if no release note was specified.
if ! grep -q '^Release note' "$1"; then
sed_script+="
;/$cchar Please enter the commit message for your changes./i\\
\\
Release note: None\\
"
fi
if ! sed "$sed_script" "$1" > "$tempfile"; then
give_up "unable to inject commit message recommendations"
fi
if ! mv "$tempfile" "$1"; then
give_up "failed overwriting commit message file"
fi