#!/bin/bash # Add suse Kernel repo headers to a patch created using git-format-patch # # Brandon Philips PATH=$(dirname $0):$PATH if [ $# -lt 1 ]; then echo "usage: $0 " echo "Add relevant headers for patches pulled from git" echo "" echo "Adds a Git-commit: tag using the From header" echo "" echo "Adds a Patch-mainline: tag if is given" echo " a useful tree name can be provided in " echo " otherwise basename will be used" echo "" echo "example usage" echo "-------------" echo "$0 NULL-pointer-fix.patch" echo "$0 NULL-pointer-fix.patch ~/kernel/linux-2.6" echo "$0 NULL-pointer-fix.patch ~/kernel/linux-2.6 pci 2.6" exit 1 fi FILE=$1 shift if [ ! -f $FILE ]; then echo "No such file $1" exit 2 fi # try the git cherry-pick -x marker first commit=$(sed -n 's/^(cherry picked from commit \([0-9a-f]*\))/\1/p' "$FILE") if test -z "$commit"; then commit=$(head -n1 $FILE | sed -n "s%From\s\([0-9a-f]*\)\s.*%\1%p") else sed -i '/^(cherry picked from commit/d' "$FILE" fi if [ "z$commit" = "z" ]; then echo "$FILE doesn't look like a patch from git" else patch-tag -A git-commit="$commit" $FILE fi if [ $# -eq 0 ]; then libdir=$(dirname "$(readlink -f "$0")") DIR=$("$libdir"/linux_git.sh) || exit 1 else DIR=$1 shift fi commit=$(patch-tag -p git-commit $FILE | grep -i "git-commit:" | sed "s%.*:\s\(.*\)%\1%g") if [ "z$commit" = "z" ]; then echo "No git-commit tag in $FILE" exit 3 fi export GIT_DIR=$DIR if [ ! -d $GIT_DIR ]; then echo "No such directory $GIT_DIR" echo 4 fi mainline=$(git describe --contains --match 'v*' $commit 2> /dev/null) if test -z "$mainline"; then mainline=$(git describe --contains $commit 2> /dev/null) fi mainline=${mainline%%[~^]*} if [ "z$mainline" = "z" ]; then if git show $commit > /dev/null 2> /dev/null; then patch-tag -A Patch-mainline="Queued in subsystem maintainer repository" "$FILE" if test -n "$1"; then patch-tag -A Git-repo="$*" "$FILE" else echo "warning: Non-mainline commit in $FILE but no repo url specified" fi exit 0 else echo "$commit from $FILE does not exist in $DIR" exit 5 fi fi patch-tag -A Patch-mainline="$mainline" $FILE