git

Форк
0
/
hooks--sendemail-validate.sample 
77 строк · 2.3 Кб
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
78

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.