gen-diff-patch (ca712e47054678c5ce93a0e0f686353ad5561195) gen-diff-patch (aa7d233f45b4c549750044c9921f7afcbe50925b)
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0-only
3
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0-only
3
4diff_patch="${1}"
5untracked_patch="${2}"
6srctree=$(dirname $0)/../..
4diff_patch=$1
7
5
8rm -f ${diff_patch} ${untracked_patch}
6mkdir -p "$(dirname "${diff_patch}")"
9
7
10if ! ${srctree}/scripts/check-git; then
11 exit
12fi
8git -C "${srctree:-.}" diff HEAD > "${diff_patch}"
13
9
14mkdir -p "$(dirname ${diff_patch})" "$(dirname ${untracked_patch})"
15
16git -C "${srctree}" diff HEAD > "${diff_patch}"
17
18if [ ! -s "${diff_patch}" ]; then
19 rm -f "${diff_patch}"
10if [ ! -s "${diff_patch}" ] ||
11 [ -z "$(git -C "${srctree:-.}" ls-files --other --exclude-standard | head -n1)" ]; then
20 exit
21fi
22
12 exit
13fi
14
23git -C ${srctree} status --porcelain --untracked-files=all |
24while read stat path
25do
26 if [ "${stat}" = '??' ]; then
27
28 if ! diff -u /dev/null "${srctree}/${path}" > .tmp_diff &&
29 ! head -n1 .tmp_diff | grep -q "Binary files"; then
30 {
31 echo "--- /dev/null"
32 echo "+++ linux/$path"
33 cat .tmp_diff | tail -n +3
34 } >> ${untracked_patch}
35 fi
36 fi
37done
38
39rm -f .tmp_diff
40
41if [ ! -s "${diff_patch}" ]; then
42 rm -f "${diff_patch}"
43 exit
44fi
15# The source tarball, which is generated by 'git archive', contains everything
16# you committed in the repository. If you have local diff ('git diff HEAD'),
17# it will go into ${diff_patch}. If untracked files are remaining, the resulting
18# source package may not be correct.
19#
20# Examples:
21# - You modified a source file to add #include "new-header.h"
22# but forgot to add new-header.h
23# - You modified a Makefile to add 'obj-$(CONFIG_FOO) += new-dirver.o'
24# but you forgot to add new-driver.c
25#
26# You need to commit them, or at least stage them by 'git add'.
27#
28# This script does not take care of untracked files because doing so would
29# introduce additional complexity. Instead, print a warning message here if
30# untracked files are found.
31# If all untracked files are just garbage, you can ignore this warning.
32echo >&2 "============================ WARNING ============================"
33echo >&2 "Your working tree has diff from HEAD, and also untracked file(s)."
34echo >&2 "Please make sure you did 'git add' for all new files you need in"
35echo >&2 "the source package."
36echo >&2 "================================================================="