Git-generated trailers are not preserved
Commitizen's --hook option truncates the COMMIT_EDITMSG file. This wipes the Signed-off-by trailer generated by Git's -s flag, as well as any other trailers that might have been there before running Commitizen, and forces us to amend our commits after the fact.
We have a temporary workaround in our hook for this, which might offer some insight:
#!/bin/bash
file="$1"
type="$2"
if [ -z "$type" ]; then # only run on new commits
#
# Save any commit message trailers generated by Git.
#
trailers=$(git interpret-trailers --parse "$file")
#
# Execute the Commitizen hook.
#
(exec < "/dev/tty" && npx --no-install git-cz --hook) || true
#
# Restore any trailers that Commitizen might have overwritten.
#
printf "\n" >> "$file"
while IFS= read -r trailer; do
git interpret-trailers --in-place --trailer "$trailer" "$file"
done <<< "$trailers"
fi
Version: [email protected], [email protected]
can you tell me where I have to put this config file? Thanks
can you tell me where I have to put this config file? Thanks
This needs to be in your prepare-commit-msg Git hook (.git/hooks/prepare-commit-message, or .husky/prepare-commit-message if you use Husky [we do]).