Something went wrong. Try again.
A static site generator for git repositories that integrates with git-bug to track issues. This is it.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778#!/bin/sh
# An example hook script to validate a patch (and/or patch series) before# sending it via email.## The hook should exit with non-zero status after issuing an appropriate# message if it wants to prevent the email(s) from being sent.## To enable this hook, rename this file to "sendemail-validate".## By default, it will only check that the patch(es) can be applied on top of# the default upstream branch without conflicts in a secondary worktree. After# validation (successful or not) of the last patch of a series, the worktree# will be deleted.## The following config variables can be set to change the default remote and# remote ref that are used to apply the patches against:## sendemail.validateRemote (default: origin)# sendemail.validateRemoteRef (default: HEAD)## Replace the TODO placeholders with appropriate checks according to your# needs.
validate_cover_letter () { file="$1" # TODO: Replace with appropriate checks (e.g. spell checking). true}
validate_patch () { file="$1" # Ensure that the patch applies without conflicts. git am -3 "$file" || return # TODO: Replace with appropriate checks for this patch # (e.g. checkpatch.pl). true}
validate_series () { # TODO: Replace with appropriate checks for the whole series # (e.g. quick build, coding style checks, etc.). true}
# main -------------------------------------------------------------------------
if test "$GIT_SENDEMAIL_FILE_COUNTER" = 1then remote=$(git config --default origin --get sendemail.validateRemote) && ref=$(git config --default HEAD --get sendemail.validateRemoteRef) && worktree=$(mktemp --tmpdir -d sendemail-validate.XXXXXXX) && git worktree add -fd --checkout "$worktree" "refs/remotes/$remote/$ref" && git config --replace-all sendemail.validateWorktree "$worktree"else worktree=$(git config --get sendemail.validateWorktree)fi || { echo "sendemail-validate: error: failed to prepare worktree" >&2 exit 1}
unset GIT_DIR GIT_WORK_TREEcd "$worktree" &&
if grep -q "^diff --git " "$1"then validate_patch "$1"else validate_cover_letter "$1"fi &&
if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL"then git config --unset-all sendemail.validateWorktree && trap 'git worktree remove -ff "$worktree"' EXIT && validate_seriesfi