mirror of
				https://github.com/alexandrebobkov/ESP-Nodes.git
				synced 2025-10-30 05:50:48 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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" = 1
 | |
| then
 | |
| 	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_TREE
 | |
| cd "$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_series
 | |
| fi
 |