Mercurial > repos > fubar > egapx_runner
comparison oldgit/hooks/sendemail-validate.sample @ 2:a3b158471bd3 draft
planemo upload for repository https://github.com/ncbi/egapx commit 98875ef7eda9323fc9991970103954e9097d9e73
author | fubar |
---|---|
date | Sun, 04 Aug 2024 00:06:43 +0000 (7 months ago) |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1:c8e1543546f8 | 2:a3b158471bd3 |
---|---|
1 #!/bin/sh | |
2 | |
3 # An example hook script to validate a patch (and/or patch series) before | |
4 # sending it via email. | |
5 # | |
6 # The hook should exit with non-zero status after issuing an appropriate | |
7 # message if it wants to prevent the email(s) from being sent. | |
8 # | |
9 # To enable this hook, rename this file to "sendemail-validate". | |
10 # | |
11 # By default, it will only check that the patch(es) can be applied on top of | |
12 # the default upstream branch without conflicts in a secondary worktree. After | |
13 # validation (successful or not) of the last patch of a series, the worktree | |
14 # will be deleted. | |
15 # | |
16 # The following config variables can be set to change the default remote and | |
17 # remote ref that are used to apply the patches against: | |
18 # | |
19 # sendemail.validateRemote (default: origin) | |
20 # sendemail.validateRemoteRef (default: HEAD) | |
21 # | |
22 # Replace the TODO placeholders with appropriate checks according to your | |
23 # needs. | |
24 | |
25 validate_cover_letter () { | |
26 file="$1" | |
27 # TODO: Replace with appropriate checks (e.g. spell checking). | |
28 true | |
29 } | |
30 | |
31 validate_patch () { | |
32 file="$1" | |
33 # Ensure that the patch applies without conflicts. | |
34 git am -3 "$file" || return | |
35 # TODO: Replace with appropriate checks for this patch | |
36 # (e.g. checkpatch.pl). | |
37 true | |
38 } | |
39 | |
40 validate_series () { | |
41 # TODO: Replace with appropriate checks for the whole series | |
42 # (e.g. quick build, coding style checks, etc.). | |
43 true | |
44 } | |
45 | |
46 # main ------------------------------------------------------------------------- | |
47 | |
48 if test "$GIT_SENDEMAIL_FILE_COUNTER" = 1 | |
49 then | |
50 remote=$(git config --default origin --get sendemail.validateRemote) && | |
51 ref=$(git config --default HEAD --get sendemail.validateRemoteRef) && | |
52 worktree=$(mktemp --tmpdir -d sendemail-validate.XXXXXXX) && | |
53 git worktree add -fd --checkout "$worktree" "refs/remotes/$remote/$ref" && | |
54 git config --replace-all sendemail.validateWorktree "$worktree" | |
55 else | |
56 worktree=$(git config --get sendemail.validateWorktree) | |
57 fi || { | |
58 echo "sendemail-validate: error: failed to prepare worktree" >&2 | |
59 exit 1 | |
60 } | |
61 | |
62 unset GIT_DIR GIT_WORK_TREE | |
63 cd "$worktree" && | |
64 | |
65 if grep -q "^diff --git " "$1" | |
66 then | |
67 validate_patch "$1" | |
68 else | |
69 validate_cover_letter "$1" | |
70 fi && | |
71 | |
72 if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL" | |
73 then | |
74 git config --unset-all sendemail.validateWorktree && | |
75 trap 'git worktree remove -ff "$worktree"' EXIT && | |
76 validate_series | |
77 fi |