xref: /linux/scripts/package/gen-diff-patch (revision 05e96e96a315fa49faca4da2aedd1761a218b616)
1*05e96e96SMasahiro Yamada#!/bin/sh
2*05e96e96SMasahiro Yamada# SPDX-License-Identifier: GPL-2.0-only
3*05e96e96SMasahiro Yamada
4*05e96e96SMasahiro Yamadadiff_patch="${1}"
5*05e96e96SMasahiro Yamadauntracked_patch="${2}"
6*05e96e96SMasahiro Yamadasrctree=$(dirname $0)/../..
7*05e96e96SMasahiro Yamada
8*05e96e96SMasahiro Yamadarm -f ${diff_patch} ${untracked_patch}
9*05e96e96SMasahiro Yamada
10*05e96e96SMasahiro Yamadaif ! ${srctree}/scripts/check-git; then
11*05e96e96SMasahiro Yamada	exit
12*05e96e96SMasahiro Yamadafi
13*05e96e96SMasahiro Yamada
14*05e96e96SMasahiro Yamadamkdir -p "$(dirname ${diff_patch})" "$(dirname ${untracked_patch})"
15*05e96e96SMasahiro Yamada
16*05e96e96SMasahiro Yamadagit -C "${srctree}" diff HEAD > "${diff_patch}"
17*05e96e96SMasahiro Yamada
18*05e96e96SMasahiro Yamadaif [ ! -s "${diff_patch}" ]; then
19*05e96e96SMasahiro Yamada	rm -f "${diff_patch}"
20*05e96e96SMasahiro Yamada	exit
21*05e96e96SMasahiro Yamadafi
22*05e96e96SMasahiro Yamada
23*05e96e96SMasahiro Yamadagit -C ${srctree} status --porcelain --untracked-files=all |
24*05e96e96SMasahiro Yamadawhile read stat path
25*05e96e96SMasahiro Yamadado
26*05e96e96SMasahiro Yamada	if [ "${stat}" = '??' ]; then
27*05e96e96SMasahiro Yamada
28*05e96e96SMasahiro Yamada		if ! diff -u /dev/null "${srctree}/${path}" > .tmp_diff &&
29*05e96e96SMasahiro Yamada			! head -n1 .tmp_diff | grep -q "Binary files"; then
30*05e96e96SMasahiro Yamada			{
31*05e96e96SMasahiro Yamada				echo "--- /dev/null"
32*05e96e96SMasahiro Yamada				echo "+++ linux/$path"
33*05e96e96SMasahiro Yamada				cat .tmp_diff | tail -n +3
34*05e96e96SMasahiro Yamada			} >> ${untracked_patch}
35*05e96e96SMasahiro Yamada		fi
36*05e96e96SMasahiro Yamada	fi
37*05e96e96SMasahiro Yamadadone
38*05e96e96SMasahiro Yamada
39*05e96e96SMasahiro Yamadarm -f .tmp_diff
40*05e96e96SMasahiro Yamada
41*05e96e96SMasahiro Yamadaif [ ! -s "${diff_patch}" ]; then
42*05e96e96SMasahiro Yamada	rm -f "${diff_patch}"
43*05e96e96SMasahiro Yamada	exit
44*05e96e96SMasahiro Yamadafi
45