X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=scripts%2Fkernel-send-patches.sh;h=4e7688fb1c49838e948bf4089c895ecaea887197;hb=1fb7f27af45bc56ba87fd9ad73751fcafb332ee3;hp=b928b32918d6ebfea845f267076e20d67578ffe5;hpb=464a8c26c891b8f2f1133ee141e81424de7d2da3;p=hvutilities.git diff --git a/scripts/kernel-send-patches.sh b/scripts/kernel-send-patches.sh index b928b32..4e7688f 100755 --- a/scripts/kernel-send-patches.sh +++ b/scripts/kernel-send-patches.sh @@ -44,6 +44,7 @@ TO_CMD="`pwd`/scripts/get_maintainer.pl --nogit --nogit-fallback --norolestats - CC_CMD="`pwd`/scripts/get_maintainer.pl --nogit --nogit-fallback --norolestats --non --nom" # Set default values +debug="0" commit_start="" commit_end="" DRY_RUN="--dry-run" @@ -55,7 +56,9 @@ cover="no" series="" resend="no" GIT_FORMAT_PATCH_SUBJECT="PATCH" +GIT_FORMAT_PATCH_OPTS="--histogram" skip_compile=0 +CHECKPATCH_OPS="--strict" print_usage() { @@ -63,20 +66,21 @@ print_usage() echo "Usage: ${PROG_NAME} [OPTIONS...]" echo echo "Options:" - echo " -d resend patch" + echo " -d debug mode" echo " -e end commit (string)" echo " -f folder containing patch infos" echo " -h display this help and exit" echo " -n dot not compile patches" + echo " -p resend patch" echo " -r really send emails (default = dry-run)" echo " -s start commit (string)" echo } -while getopts "de:f:hnrs:" flag ;do +while getopts "de:f:hnprs:" flag ;do case ${flag} in d) - resend="yes" + debug="1" ;; e) commit_end="${OPTARG}" @@ -91,6 +95,9 @@ while getopts "de:f:hnrs:" flag ;do n) skip_compile=1 ;; + p) + resend="yes" + ;; r) DRY_RUN="" ;; @@ -184,6 +191,16 @@ find_commit_by_log() echo $(git log --oneline HEAD~100..HEAD | grep "${1}" | awk {'print $1'}) } +# Find SHA1 of preceding commit: +# First arg: commit message +find_preceding_commit_by_log() +{ + local sha1_end + + sha1_end="$(find_commit_by_log "${1}")" + echo $(git log --oneline ${sha1_end}~2..${sha1_end}~1 | awk {'print $1'}) +} + # Remove "Name" if present in email address. Needed because of a bug in # get_maintainer.pl even if we specify the "--non" option. # Arg #1: "Name " or "email" @@ -245,6 +262,11 @@ if [ x"${COMMIT_END_SHA1}" = x"" ]; then exit 1 fi +if echo "${commit_end}" | grep -q "^end"; then + # Take commit just before end commit: + COMMIT_END_SHA1=$(find_preceding_commit_by_log "${commit_end}") +fi + rm -rf ${srcdir}/*.patch # If the cover letter is not between start and end commits, save a copy: @@ -264,7 +286,12 @@ if [ x"${orig_branch}" = x"" ]; then fi if git branch | grep -q ${patches_branch}; then - git branch -D ${patches_branch} + git branch -D ${patches_branch} 1>/dev/null +fi + +if [ "${debug}" = "1" ]; then + echo "start commit: ${COMMIT_START_SHA1}" + echo "end commit: ${COMMIT_END_SHA1}" fi # Create new branch from base_branch, and apply all our patches onto it: @@ -272,7 +299,7 @@ git checkout -b ${patches_branch} ${base_branch} git branch --set-upstream-to ${base_branch} git cherry-pick ${COMMIT_START_SHA1}..${COMMIT_END_SHA1} -GIT_FORMAT_PATCH_OPTS="--base=${base_commit}" +GIT_FORMAT_PATCH_OPTS="${GIT_FORMAT_PATCH_OPTS} --base=${base_commit}" if [ x"${cover}" = x"yes" ]; then GIT_FORMAT_PATCH_OPTS="${GIT_FORMAT_PATCH_OPTS} --cover-letter" @@ -293,7 +320,7 @@ git format-patch --subject-prefix="${GIT_FORMAT_PATCH_SUBJECT}" \ if [ x"${cover}" = x"yes" ]; then # Replace subject line in cover letter: - sed -i -e "s/\*\*\* SUB.*/${subject}/" ${srcdir}/${series_prefix}0000-cover-letter.patch + sed -i -e "s@\*\*\* SUB.*@${subject}@" ${srcdir}/${series_prefix}0000-cover-letter.patch # Replace blurb line in cover letter: sed -i -e "/.*BLURB.*/{r /tmp/cover-letter.txt" -e 'd}' ${srcdir}/${series_prefix}0000-cover-letter.patch @@ -344,9 +371,6 @@ EOF git checkout -b ${temp_compile_branch} ${compile_branch} - # Make sure temp_compile_branch is rebased on base_branch: - git rebase ${base_branch} - # Apply all of our commits to temp_compile_branch: git cherry-pick ${COMMIT_START_SHA1}..${COMMIT_END_SHA1}