Jeff Mahoney 170983
#! /bin/bash
Michal Marek 7f1bb6
Michal Marek 7f1bb6
#############################################################################
Michal Marek 7f1bb6
# Copyright (c) 2004-2006,2008-2010 Novell, Inc.
Michal Marek 7f1bb6
# All Rights Reserved.
Michal Marek 7f1bb6
#
Michal Marek 7f1bb6
# This program is free software; you can redistribute it and/or
Michal Marek 7f1bb6
# modify it under the terms of version 2 of the GNU General Public License as
Michal Marek 7f1bb6
# published by the Free Software Foundation.
Michal Marek 7f1bb6
#
Michal Marek 7f1bb6
# This program is distributed in the hope that it will be useful,
Michal Marek 7f1bb6
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Michal Marek 7f1bb6
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   See the
Michal Marek 7f1bb6
# GNU General Public License for more details.
Michal Marek 7f1bb6
#
Michal Marek 7f1bb6
# You should have received a copy of the GNU General Public License
Michal Marek 7f1bb6
# along with this program; if not, contact Novell, Inc.
Michal Marek 7f1bb6
#
Michal Marek 7f1bb6
# To contact Novell about this file by physical or electronic mail,
Michal Marek 7f1bb6
# you may find current contact information at www.novell.com
Michal Marek 7f1bb6
#############################################################################
Michal Marek 7f1bb6
Michal Marek 7f1bb6
# git commit wrapper, generates unified commit messages from patch headers
Michal Marek 7f1bb6
Benjamin Poirier 82873f
_libdir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
Michal Marek 7f1bb6
Michal Marek 7f1bb6
log_entry() {
Michal Marek 7f1bb6
    local entry=$1
Michal Marek 7f1bb6
Michal Marek 7835b2
    echo "$entry" | fmt --width 65 | sed -e '1s/^/- /' -e '2,$s/^/  /'
Michal Marek 7f1bb6
}
Michal Marek 7f1bb6
Michal Marek 7f1bb6
patch_meta() {
Michal Marek 7f1bb6
    local patch=$1
Michal Marek 7f1bb6
Michal Marek 7f1bb6
    subject=$(formail -c -x Subject < "$patch" \
Michal Marek 7f1bb6
             | sed -e 's, *\[[#/ A-Za-z0-9-]*\],,')
Jeff Mahoney 7f09b5
    subject=${subject##:}
Michal Marek 7f1bb6
    subject=${subject## }
Michal Marek 7f1bb6
    subject=${subject%.}
Michal Marek 7f1bb6
Michal Marek 9289fd
    # allow one blank line before the References: header
Michal Marek 9289fd
    set -- $(awk '
Michal Marek 5f2c56
	/^References:/ { sub(/^References:/, ""); print; exit }
Michal Marek 9289fd
	/^$/ { if (++blank > 1) exit }' "$patch")
Michal Marek 7f1bb6
    references="$*"
Michal Marek 890bb7
    case "$references" in
Michal Marek 890bb7
    None | none)
Michal Marek 890bb7
        references=
Michal Marek 890bb7
    esac
Michal Marek 7f1bb6
}
Michal Marek 7f1bb6
Michal Marek 7f1bb6
patch_log_entry() {
Michal Marek 7f1bb6
    local patch=$1 subject references old_subj old_ref old_patch="$tmpdir/old"
Michal Marek 7f1bb6
Michal Marek 7f1bb6
    git show "HEAD:$patch" >"$old_patch" 2>/dev/null
Michal Marek 7f1bb6
    patch_meta "$old_patch"
Michal Marek 7f1bb6
    old_subj="$subject"
Michal Marek 7f1bb6
    old_ref="$references"
Michal Marek 7f1bb6
Michal Marek 7f1bb6
    patch_meta "$patch"
Michal Marek 7f1bb6
Michal Marek 834b1e
    if test -z "$subject"; then
Michal Marek 834b1e
        # should not happen
Michal Marek 834b1e
        log_entry "$patch: ${references:+($references).}"
Michal Marek 834b1e
    elif test "$subject" != "$old_subj"; then
Michal Marek 834b1e
	log_entry "$subject${references:+ ($references)}."
Michal Marek 7f1bb6
    elif test "$references" != "$old_ref"; then
Michal Marek 834b1e
        # a new bugzilla reference suggest a non-trivial change
Michal Marek 834b1e
        log_entry "Update $patch${references:+ ($references)}."
Michal Marek 7f1bb6
    else
Michal Marek 834b1e
        log_entry "Refresh $patch."
Michal Marek 7f1bb6
    fi
Michal Marek 7f1bb6
}
Michal Marek 7f1bb6
Michal Marek afdba6
# Print log entries for given added/modified files
Michal Marek afdba6
log_entries()
Michal Marek 914943
{
Michal Marek afdba6
    local file configs_updated=false symvers_updated=false
Michal Marek d2fbda
Michal Marek afdba6
    for file in "$@"; do
Michal Marek 914943
        case "$file" in
Michal Marek 914943
        config/*)
Michal Marek afdba6
            if ! $configs_updated; then
Michal Marek afdba6
                log_entry "Update config files."
Michal Marek afdba6
                configs_updated=true
Michal Marek 914943
            fi
Michal Marek 914943
            ;;
Michal Marek 914943
        patches.*)
Michal Marek afdba6
            patch_log_entry "$file"
Michal Marek 914943
            ;;
Michal Marek 914943
        kabi/*/symvers-* | kabi/*/symtypes-* | kabi/*/symsets-* )
Michal Marek afdba6
            if ! $symvers_updated; then
Michal Marek afdba6
                log_entry "Update kabi files."
Michal Marek afdba6
                symvers_updated=true
Michal Marek 914943
            fi
Michal Marek 914943
            ;;
Michal Marek 914943
        series.conf)
Michal Marek 914943
            # don't log changes in there
Michal Marek 914943
            ;;
Michal Marek 914943
        *)
Michal Marek afdba6
            log_entry "$file: "
Michal Marek 914943
            ;;
Michal Marek 914943
        esac
Michal Marek 914943
    done
Michal Marek afdba6
}
Michal Marek afdba6
Michal Marek afdba6
do_commit()
Michal Marek afdba6
{
Michal Marek afdba6
    local message edit=--edit
Michal Marek afdba6
Michal Marek afdba6
    if test -z "${added[*]}${modified[*]}${deleted[*]}"; then
Michal Marek afdba6
        echo "No modified files" >&2
Michal Marek afdba6
        exit 1
Michal Marek afdba6
    fi
Michal Marek afdba6
    if test "$1" = "--no-edit"; then
Michal Marek afdba6
        edit=
Michal Marek afdba6
    fi
Michal Marek afdba6
    message=$tmpdir/message
Michal Marek afdba6
    echo >"$message"
Michal Marek afdba6
    log_entries "${added[@]}" "${modified[@]}" >>"$message"
Michal Marek 914943
    for file in "${deleted[@]}"; do
Michal Marek 7835b2
        log_entry "Delete $file." >>"$message"
Michal Marek 914943
    done
Michal Marek 914943
Michal Marek 0f60bf
    # If there is only one entry, remove the "-" bullet to make the git log
Michal Marek 0f60bf
    # prettier. If there are multiple entries, we give up, because
Michal Marek 0f60bf
    # scripts/gitlog2changes wouldn't know where to insert the bullets again
Michal Marek 0f60bf
    if test $(grep -c '^- ' "$message") = 1; then
Michal Marek 0f60bf
        sed -i 's/^[- ] //' "$message"
Michal Marek 914943
    fi
Michal Marek 7f1bb6
Michal Marek d2fbda
    if test -n "$edit" -a -e "$tmpdir/notice"; then
Michal Marek 89c232
        cat "$_" >>"$message"
Michal Marek 89c232
    fi
Michal Marek d2fbda
    git commit "$@" -F $message $edit
Michal Marek 89c232
}
Michal Marek 89c232
Michal Marek 89c232
# Check if series.conf contains only patch additions and print the
Michal Marek 89c232
# added patches in order of appearance.
Michal Marek 89c232
check_series_diff()
Michal Marek 89c232
{
Michal Marek 89c232
    awk '
Michal Marek 89c232
        /^\+\+\+ / {
Michal Marek 89c232
            body = 1
Michal Marek 89c232
            next
Michal Marek 89c232
        }
Michal Marek 89c232
        !body || # ignore the patch header
Michal Marek 89c232
        /^[@ ]/ || # ignore line numbers and context
Michal Marek 89c232
        /^[-+][[:blank:]]*(#.*)?$/ { # ignore whitespace and comments
Michal Marek 89c232
            next
Michal Marek 89c232
        }
Michal Marek 89c232
        # added unguarded patches are OK
Michal Marek 89c232
        /^\+[[:blank:]]*patches\.[^[:blank:]]*\// {
Michal Marek 89c232
            print $2
Michal Marek 89c232
            next
Michal Marek 89c232
        }
Michal Marek 89c232
        # anything else is a problem
Michal Marek 89c232
        #{ print >"/dev/stderr" }
Michal Marek 89c232
        { exit 1 }
Michal Marek 89c232
    '
Michal Marek 89c232
}
Michal Marek 89c232
Michal Marek cac3af
# Check whether we are only adding new patches and possibly updating
Michal Marek cac3af
# configs. At least one patch must be added.
Michal Marek 89c232
only_patches()
Michal Marek 89c232
{
Michal Marek cac3af
    local file have_patches=false
Michal Marek 89c232
Michal Marek cac3af
    for file in "${modified[@]}"; do
Michal Marek cac3af
        case "$file" in
Michal Marek c465cf
        series.conf | config/* | supported.conf | blacklist.conf | kabi/severities)
Michal Marek cac3af
            ;;
Michal Marek cac3af
        *)
Michal Marek cac3af
            return 1
Michal Marek cac3af
        esac
Michal Marek cac3af
    done
Michal Marek 89c232
    if test -n "${deleted[*]}"; then
Michal Marek 89c232
        return 1
Michal Marek 89c232
    fi
Michal Marek 89c232
    for file in "${added[@]}"; do
Michal Marek 89c232
        case "$file" in
Michal Marek 89c232
        patches.*/*)
Michal Marek cac3af
            have_patches=true
Michal Marek 89c232
            ;;
Michal Marek 89c232
        *)
Michal Marek 89c232
            return 1
Michal Marek 89c232
        esac
Michal Marek 89c232
    done
Michal Marek cac3af
    if ! $have_patches; then
Michal Marek cac3af
        return 1
Michal Marek cac3af
    fi
Michal Marek 89c232
    git diff HEAD -- series.conf | check_series_diff >/dev/null || return
Michal Marek 89c232
    return 0
Michal Marek 89c232
}
Michal Marek 89c232
Benjamin Poirier 4a3b64
Benjamin Poirier 4a3b64
trim() {
Benjamin Poirier 4a3b64
    local var="$*"
Benjamin Poirier 4a3b64
Benjamin Poirier 4a3b64
    # remove leading whitespace characters
Benjamin Poirier 4a3b64
    var="${var#"${var%%[![:space:]]*}"}"
Benjamin Poirier 4a3b64
    # remove trailing whitespace characters
Benjamin Poirier 4a3b64
    var="${var%"${var##*[![:space:]]}"}"   
Benjamin Poirier 4a3b64
Benjamin Poirier 4a3b64
    echo -n "$var"
Benjamin Poirier 4a3b64
}
Benjamin Poirier 4a3b64
Benjamin Poirier 4a3b64
Benjamin Poirier 4a3b64
# Insert part of the content added to a new series file back into the old
Benjamin Poirier 4a3b64
# series file
Benjamin Poirier 4a3b64
# splice_series <patch name> 3
Benjamin Poirier 4a3b64
splice_series()
Michal Marek 89c232
{
Benjamin Poirier 4a3b64
    local patch=$1
Benjamin Poirier 4a3b64
Benjamin Poirier 4a3b64
    local old new old_eof new_eof
Benjamin Poirier 4a3b64
    local state="matching"
Benjamin Poirier 4a3b64
Benjamin Poirier 4a3b64
    IFS=
Benjamin Poirier 4a3b64
    while true; do
Benjamin Poirier 4a3b64
        if [ $state = "matching" ]; then
Benjamin Poirier 4a3b64
            read -r -u 3 old || old_eof=1
Benjamin Poirier 4a3b64
            read -r -u 4 new || new_eof=1
Benjamin Poirier 4a3b64
            if [ -z "$old_eof" -a "$new_eof" ]; then
Benjamin Poirier 4a3b64
                echo "Error: new series does not contain all" \
Benjamin Poirier 4a3b64
                    "lines from old series." > /dev/stderr
Benjamin Poirier 4a3b64
                return 1
Benjamin Poirier 4a3b64
            fi
Benjamin Poirier 4a3b64
            echo "$new"
Benjamin Poirier 4a3b64
            if [ "$old_eof" -a "$new_eof" ]; then
Benjamin Poirier 4a3b64
                break
Benjamin Poirier 4a3b64
            elif [ "$old_eof" -o "$new" != "$old" ]; then
Benjamin Poirier 4a3b64
                if [ "$(trim "$new")" = "$patch" ]; then
Benjamin Poirier 4a3b64
                    state="just after patch"
Benjamin Poirier 4a3b64
                else
Benjamin Poirier 4a3b64
                    state="diff"
Benjamin Poirier 4a3b64
                fi
Benjamin Poirier 4a3b64
            fi
Benjamin Poirier 4a3b64
        elif [ $state = "diff" ]; then
Benjamin Poirier 4a3b64
            read -r -u 4 new || new_eof=1
Benjamin Poirier 4a3b64
            if [ "$new_eof" ]; then
Benjamin Poirier 4a3b64
                echo "Error: new series does not contain all" \
Benjamin Poirier 4a3b64
                    "lines from old series." > /dev/stderr
Benjamin Poirier 4a3b64
                return 1
Benjamin Poirier 4a3b64
            fi
Benjamin Poirier 4a3b64
            echo "$new"
Benjamin Poirier 4a3b64
            if [ ! "$old_eof" -a "$new" = "$old" ]; then
Benjamin Poirier 4a3b64
                state="matching"
Benjamin Poirier 4a3b64
            elif [ "$(trim "$new")" = "$patch" ]; then
Benjamin Poirier 4a3b64
                state="just after patch"
Benjamin Poirier 4a3b64
            fi
Benjamin Poirier 4a3b64
        elif [ $state = "just after patch" ]; then
Benjamin Poirier 4a3b64
            read -r -u 4 new || new_eof=1
Benjamin Poirier 4a3b64
            if [ "$new_eof" ]; then
Benjamin Poirier 4a3b64
                break
Benjamin Poirier dae2e8
            elif [ ! "$old_eof" -a "$new" = "$old" ]; then
Benjamin Poirier 4a3b64
                echo "$old"
Benjamin Poirier 4a3b64
                state="after patch"
Benjamin Poirier 4a3b64
            elif [ -z "$(trim "$new")" ]; then
Benjamin Poirier 4a3b64
                echo "$new"
Benjamin Poirier dae2e8
                state="whitespace seen"
Benjamin Poirier dae2e8
            fi
Benjamin Poirier dae2e8
        elif [ $state = "whitespace seen" ]; then
Benjamin Poirier dae2e8
            read -r -u 4 new || new_eof=1
Benjamin Poirier dae2e8
            if [ "$new_eof" ]; then
Benjamin Poirier dae2e8
                break
Benjamin Poirier dae2e8
            elif [ ! "$old_eof" -a "$new" = "$old" ]; then
Benjamin Poirier dae2e8
                echo "$old"
Benjamin Poirier dae2e8
                state="after patch"
Benjamin Poirier dae2e8
            elif [ -z "$(trim "$new")" ]; then
Benjamin Poirier dae2e8
                echo "$new"
Benjamin Poirier dae2e8
            else
Benjamin Poirier dae2e8
                state="after whitespace"
Benjamin Poirier dae2e8
            fi
Benjamin Poirier dae2e8
        elif [ $state = "after whitespace" ]; then
Benjamin Poirier dae2e8
            read -r -u 4 new || new_eof=1
Benjamin Poirier dae2e8
            if [ "$new_eof" ]; then
Benjamin Poirier dae2e8
                break
Benjamin Poirier dae2e8
            elif [ ! "$old_eof" -a "$new" = "$old" ]; then
Benjamin Poirier dae2e8
                echo "$old"
Benjamin Poirier dae2e8
                state="after patch"
Benjamin Poirier 4a3b64
            fi
Benjamin Poirier 4a3b64
        elif [ $state = "after patch" ]; then
Benjamin Poirier dae2e8
            #echo "@@ state $state old <$old> eof <$old_eof> new <$new> eof <$new_eof>" > /dev/stderr
Benjamin Poirier f6fb30
            cat <&3
Benjamin Poirier f6fb30
            break
Benjamin Poirier 4a3b64
        fi
Benjamin Poirier 4a3b64
    done
Michal Marek 89c232
Benjamin Poirier 4a3b64
    if [ $state = "matching" ]; then
Benjamin Poirier 4a3b64
        echo "Error: patch \"$patch\" not found in series." > /dev/stderr
Benjamin Poirier 4a3b64
        return 1
Michal Marek 89c232
    fi
Michal Marek 89c232
}
Michal Marek 89c232
Michal Marek 89c232
# Commit patches one by one for better bisectability
Michal Marek 89c232
commit_single_patches()
Michal Marek 89c232
{
Michal Marek 89c232
    local saved_index=$(git write-tree) patch series
Michal Suchanek 990531
    local file added=() modified_aux=() deleted=()
Benjamin Poirier 5845ab
    git cat-file blob HEAD:series.conf > "$tmpdir"/old_series
Benjamin Poirier 5845ab
    cp series.conf "$tmpdir"/new_series
Michal Marek 89c232
Michal Marek cac3af
    for file in "${modified[@]}"; do
Michal Marek cac3af
        case "$file" in
Michal Marek c465cf
        config/* | supported.conf | blacklist.conf | kabi/severities)
Michal Marek afdba6
            modified_aux=("${modified_aux[@]}" "$file")
Michal Marek cac3af
        esac
Michal Marek cac3af
    done
Michal Marek cac3af
    local modified=()
Michal Marek 89c232
    # reset the index
Michal Marek 89c232
    git read-tree HEAD
Michal Marek 89c232
    set -- $(git diff HEAD -- series.conf | check_series_diff)
Michal Marek cadbf0
    if test $# -gt 1; then
Michal Marek cadbf0
        # Fix the author date so that scripts/gitlog2changes can group
Michal Marek cadbf0
        # the commits into a single rpm changelog entry
Michal Marek cadbf0
        export GIT_AUTHOR_DATE=$(date -R)
Michal Marek afdba6
        log_entries "$@" "${modified_aux[@]}"
Michal Marek d2fbda
        read -p 'Commit with these changelog messages? [Yn] '
Michal Marek d2fbda
        case "$REPLY" in
Michal Marek d2fbda
        "" | [Yy] | [Yy][Ee][Ss])
Michal Marek d2fbda
            no_edit=--no-edit
Michal Marek d2fbda
        esac
Michal Marek cadbf0
    fi
Michal Marek cac3af
    # Commit patches except the last one
Michal Marek cac3af
    while test $# -gt 1; do
Michal Marek 89c232
        patch=$1
Michal Marek 89c232
        shift
Michal Marek 89c232
        # add a series.conf with a single new patch to the index
Benjamin Poirier 5845ab
        series=$(splice_series "$patch" \
Benjamin Poirier 5845ab
            3<"$tmpdir"/old_series 4<"$tmpdir"/new_series | \
Benjamin Poirier 4a3b64
            git hash-object -w --stdin)
Michal Marek 89c232
        git read-tree $(git ls-tree HEAD | \
Michal Marek 89c232
            sed -r "s/(.*)\\<[0-9a-f]{40}\\>(.*\\
Michal Marek 89c232
            | git mktree)
Michal Marek 89c232
        git add "$patch"
Michal Marek 89c232
        added=("$patch")
Michal Marek cac3af
        cat >"$tmpdir/notice" <
Michal Marek d2fbda
Michal Marek 89c232
# Patches are being committed one by one for better bisectability.
Michal Marek 89c232
# There are $# more patches to commit.
Michal Marek 89c232
EOF
Benjamin Poirier 0f98cc
        if ! do_commit $no_edit --no-verify; then
Michal Marek 89c232
            # restore the index so that the user does not need to git add
Michal Marek 89c232
            # the patches again
Michal Marek 89c232
            git read-tree "$saved_index"
Michal Marek 89c232
            return 1
Michal Marek 89c232
        fi
Michal Marek 89c232
    done
Michal Marek cac3af
    rm -f "$tmpdir/notice"
Michal Marek cac3af
    # commit the last patch and possible config update together
Michal Marek cac3af
    patch=$1
Michal Marek cac3af
    git add "$patch"
Michal Marek cac3af
    added=("$patch")
Michal Marek afdba6
    modified=("${modified_aux[@]}")
Michal Marek 17c40e
    if test -n "${modified[*]}"; then
Michal Marek 17c40e
        no_edit=
Michal Marek 17c40e
    fi
Benjamin Poirier 0f98cc
    if ! do_commit $no_edit --no-verify -a; then
Michal Marek cac3af
        git read-tree "$saved_index"
Michal Marek cac3af
        return 1
Michal Marek cac3af
    fi
Michal Marek 914943
}
Michal Marek 914943
Benjamin Poirier 82873f
# do not run "main" code if script is being sourced rather than executed
Benjamin Poirier 82873f
[[ $0 != "$BASH_SOURCE" ]] && return
Benjamin Poirier 82873f
Benjamin Poirier 82873f
. "$_libdir"/wd-functions.sh
Benjamin Poirier 82873f
Benjamin Poirier 82873f
if ! $using_git; then
Benjamin Poirier 82873f
    echo "ERROR: not in a git working directory."
Benjamin Poirier 82873f
    exit 1
Benjamin Poirier 82873f
fi
Benjamin Poirier 82873f
Benjamin Poirier 82873f
"$_libdir"/check-cvs-add || exit 1
Benjamin Poirier 82873f
Michal Suchanek 990531
while [ -n "$1" ] ; do
Michal Suchanek 990531
    case "$1" in
Michal Suchanek 990531
        --no-edit) no_edit=--no-edit
Michal Suchanek 990531
            ;;
Takashi Iwai 38eaa4
        --amend) amend=yes
Takashi Iwai 38eaa4
            ;;
Michal Suchanek 990531
        *) echo Unknown argument "$1" >&2
Michal Suchanek 990531
            ;;
Michal Suchanek 990531
    esac
Michal Suchanek 990531
    shift
Michal Suchanek 990531
done
Michal Suchanek 990531
Takashi Iwai 38eaa4
if [ -n "$amend" ]; then
Takashi Iwai 38eaa4
    if [ $(git rev-list HEAD^.. | wc -l) -gt 1 ]; then
Takashi Iwai 38eaa4
	echo "ERROR: cannot use --amend option on the merge commit HEAD."
Takashi Iwai 38eaa4
	exit 1
Takashi Iwai 38eaa4
    fi
Takashi Iwai 38eaa4
    git reset --soft HEAD^
Takashi Iwai 38eaa4
fi
Takashi Iwai 38eaa4
Benjamin Poirier 82873f
trap 'rm -rf "$tmpdir"' EXIT
Benjamin Poirier 82873f
tmpdir=$(mktemp -d /tmp/${0##*/}.XXXXXX)
Benjamin Poirier 82873f
Michal Marek cac26c
if test -e "$(git rev-parse --git-dir)/MERGE_HEAD"; then
Michal Marek cac26c
    # Do not try to fabricate a commit message for merge commits, git itself
Michal Marek cac26c
    # does it better
Michal Marek cac26c
    git commit -a
Michal Marek cac26c
    exit
Michal Marek cac26c
fi
Michal Marek cac26c
Michal Marek 914943
added=($(git diff --name-only --diff-filter=A HEAD))
Michal Marek 914943
modified=($(git diff --name-only --diff-filter=MT HEAD))
Michal Marek 914943
deleted=($(git diff --name-only --diff-filter=D HEAD))
Michal Marek 7f1bb6
Jeff Mahoney 23674d
scripts/check-patch-dirs "${added[@]}" "${modified[@]}" || exit 1
Jeff Mahoney 23674d
Michal Marek 89c232
if only_patches; then
Takashi Iwai 90691b
    git add -u
Benjamin Poirier 0f98cc
    "$_libdir"/git-pre-commit || exit
Michal Marek 89c232
    commit_single_patches || exit
Michal Marek 89c232
else
Michal Marek 89c232
    # FIXME: -a should not be the default
Michal Marek 89c232
    do_commit -a || exit
Michal Marek 89c232
fi
Michal Marek e6c3a3
Michal Marek e6c3a3
branch=$(get_branch_name)
Michal Marek e6c3a3
case "$branch" in
Michal Marek b26b17
master | stable | vanilla | linux-next | openSUSE-??.? | \
Matthias Brugger fa0677
SLE?? | SLE*-ARM| SLE??-SP? | SLE*-RT | SLE*-TD | SLE*-LTSS | \
Matthias Brugger fa0677
cve/linux-* | packaging | scripts)
Benjamin Poirier 775690
    remote=$(get_git_remote "$branch")
Benjamin Poirier 775690
    user=$(get_git_user "$remote")
Michal Marek e6c3a3
    echo "after testing your changes, run"
Benjamin Poirier 775690
    echo "    git push $remote HEAD:users/$user/$branch/for-next"
Michal Marek e6c3a3
esac
Michal Marek 914943
Michal Marek 914943
# vim: et:sts=4:sw=4