|
Jeff Mahoney |
9663dc |
#! /bin/bash
|
|
Benjamin Poirier |
775690 |
# vim: et:sts=4:sw=4
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
0a417c |
#############################################################################
|
|
Michal Marek |
0a417c |
# Copyright (c) 2004-2006,2008,2009 Novell, Inc.
|
|
Michal Marek |
0a417c |
# All Rights Reserved.
|
|
Michal Marek |
0a417c |
#
|
|
Michal Marek |
0a417c |
# This program is free software; you can redistribute it and/or
|
|
Michal Marek |
0a417c |
# modify it under the terms of version 2 of the GNU General Public License as
|
|
Michal Marek |
0a417c |
# published by the Free Software Foundation.
|
|
Michal Marek |
0a417c |
#
|
|
Michal Marek |
0a417c |
# This program is distributed in the hope that it will be useful,
|
|
Michal Marek |
0a417c |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Michal Marek |
0a417c |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Michal Marek |
0a417c |
# GNU General Public License for more details.
|
|
Michal Marek |
0a417c |
#
|
|
Michal Marek |
0a417c |
# You should have received a copy of the GNU General Public License
|
|
Michal Marek |
0a417c |
# along with this program; if not, contact Novell, Inc.
|
|
Michal Marek |
0a417c |
#
|
|
Michal Marek |
0a417c |
# To contact Novell about this file by physical or electronic mail,
|
|
Michal Marek |
0a417c |
# you may find current contact information at www.novell.com
|
|
Michal Marek |
0a417c |
#############################################################################
|
|
Michal Marek |
0a417c |
|
|
Michal Marek |
3756dc |
if test -x "${0}2" -a ! -e kernel-source.changes; then
|
|
Michal Marek |
7f1bb6 |
# hand over to scripts/log2
|
|
Michal Marek |
7f1bb6 |
exec "${0}2" "$@"
|
|
Michal Marek |
7f1bb6 |
fi
|
|
Michal Marek |
7f1bb6 |
|
|
Michal Marek |
8f13a0 |
# Construct a changes entry and commit log from a patch.
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
. ${0%/*}/wd-functions.sh
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
if ! $using_git; then
|
|
Michal Marek |
8f13a0 |
echo "ERROR: not in a git working directory."
|
|
Michal Marek |
8f13a0 |
exit 1
|
|
Michal Marek |
8f13a0 |
fi
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
scripts/check-cvs-add || exit 1
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
CHANGES=kernel-source.changes
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
975e43 |
trap 'rm -rf "$tmpdir"' EXIT
|
|
Michal Marek |
975e43 |
tmpdir=$(mktemp -d /tmp/${0##*/}.XXXXXX)
|
|
Michal Marek |
975e43 |
message=$tmpdir/message
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
log_entry() {
|
|
Michal Marek |
8f13a0 |
local entry=$1
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
echo "$entry" \
|
|
Michal Marek |
8f13a0 |
| fmt --width 65 \
|
|
Michal Marek |
8f13a0 |
| sed -e '1s/^/- /' -e '2,$s/^/ /' \
|
|
Michal Marek |
8f13a0 |
>> $message
|
|
Michal Marek |
8f13a0 |
}
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
975e43 |
patch_meta() {
|
|
Michal Marek |
8f13a0 |
local patch=$1
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
subject=$(formail -c -x Subject < "$patch" \
|
|
Michal Marek |
8f13a0 |
| sed -e 's, *\[[#/ A-Za-z0-9-]*\],,')
|
|
Jeff Mahoney |
7f09b5 |
subject=${subject##:}
|
|
Michal Marek |
8f13a0 |
subject=${subject## }
|
|
Michal Marek |
76da9b |
subject=${subject%.}
|
|
Michal Marek |
8f13a0 |
|
|
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 |
7cdc50 |
references="$*"
|
|
Michal Marek |
890bb7 |
case "$references" in
|
|
Michal Marek |
890bb7 |
None | none)
|
|
Michal Marek |
890bb7 |
references=
|
|
Michal Marek |
890bb7 |
esac
|
|
Michal Marek |
975e43 |
}
|
|
Michal Marek |
975e43 |
|
|
Michal Marek |
975e43 |
patch_log_entry() {
|
|
Michal Marek |
975e43 |
local patch=$1 subject references old_subj old_ref old_patch="$tmpdir/old"
|
|
Michal Marek |
975e43 |
|
|
Michal Marek |
d942fb |
git show "HEAD:$patch" >"$old_patch" 2>/dev/null
|
|
Michal Marek |
975e43 |
patch_meta "$old_patch"
|
|
Michal Marek |
975e43 |
old_subj="$subject"
|
|
Michal Marek |
975e43 |
old_ref="$references"
|
|
Michal Marek |
975e43 |
|
|
Michal Marek |
975e43 |
patch_meta "$patch"
|
|
Michal Marek |
975e43 |
|
|
Michal Marek |
975e43 |
local msg
|
|
Michal Marek |
975e43 |
if test -z "$subject" -o "$subject" != "$old_subj"; then
|
|
Michal Marek |
975e43 |
msg="$subject${references:+ ($references)}"
|
|
Michal Marek |
975e43 |
elif test "$references" != "$old_ref"; then
|
|
Michal Marek |
975e43 |
if test -n "$references"; then
|
|
Michal Marek |
975e43 |
msg="Update references ($references)"
|
|
Michal Marek |
975e43 |
fi
|
|
Michal Marek |
975e43 |
else
|
|
Michal Marek |
975e43 |
msg="Refresh"
|
|
Michal Marek |
975e43 |
fi
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
log_entry "$patch: $msg${msg:+.}"
|
|
Michal Marek |
8f13a0 |
}
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
for file in "$@" $(scripts/cvs-touched-files); do
|
|
Michal Marek |
8f13a0 |
[ "${file:(-8)}" = ".changes" ] && continue
|
|
Michal Marek |
8f13a0 |
files[${#files[@]}]=$file
|
|
Michal Marek |
8f13a0 |
done
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
if [ ${#files[@]} -eq 0 ]; then
|
|
Michal Marek |
8f13a0 |
echo "No modified files" >&2
|
|
Michal Marek |
8f13a0 |
exit 1
|
|
Michal Marek |
8f13a0 |
fi
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
for file in "${files[@]}"; do
|
|
Michal Marek |
8f13a0 |
if [ "${file:0:1}" = - ]; then
|
|
Michal Marek |
8f13a0 |
log_entry "${file:1}: Delete."
|
|
Michal Marek |
8f13a0 |
else
|
|
Michal Marek |
8f13a0 |
case "$file" in
|
|
Michal Marek |
8f13a0 |
config/*)
|
|
Michal Marek |
8f13a0 |
if [ -z "$configs_updated" ]; then
|
|
Michal Marek |
8f13a0 |
log_entry "Update config files."
|
|
Michal Marek |
8f13a0 |
configs_updated=1
|
|
Michal Marek |
8f13a0 |
fi
|
|
Michal Marek |
8f13a0 |
;;
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
patches.*)
|
|
Michal Marek |
8f13a0 |
patch_log_entry "$file"
|
|
Michal Marek |
8f13a0 |
;;
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
fd1cc8 |
kabi/*/symvers-* | kabi/*/symtypes-* | kabi/*/symsets-* )
|
|
Michal Marek |
8f13a0 |
if [ -z "$symvers_updated" ]; then
|
|
Michal Marek |
8f13a0 |
log_entry "Update reference module symbol versions."
|
|
Michal Marek |
8f13a0 |
symvers_updated=1
|
|
Michal Marek |
8f13a0 |
fi
|
|
Michal Marek |
8f13a0 |
;;
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
series.conf)
|
|
Michal Marek |
8f13a0 |
# don't log changes in there
|
|
Michal Marek |
8f13a0 |
;;
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
*)
|
|
Michal Marek |
8f13a0 |
log_entry "$file: "
|
|
Michal Marek |
8f13a0 |
;;
|
|
Michal Marek |
8f13a0 |
esac
|
|
Michal Marek |
8f13a0 |
fi
|
|
Michal Marek |
8f13a0 |
done
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
if [ ! -s $message ]; then
|
|
Michal Marek |
8f13a0 |
echo "- " >> $message
|
|
Michal Marek |
8f13a0 |
fi
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
if [ -z "$VC" ]; then
|
|
Michal Marek |
8f13a0 |
VC=vc
|
|
Michal Marek |
8f13a0 |
for search in $HOME/bin /work/src/bin scripts; do
|
|
Michal Marek |
8f13a0 |
if [ -x $search/$VC ]; then
|
|
Michal Marek |
8f13a0 |
VC=$search/$VC
|
|
Michal Marek |
8f13a0 |
break
|
|
Michal Marek |
8f13a0 |
fi
|
|
Michal Marek |
8f13a0 |
done
|
|
Michal Marek |
8f13a0 |
fi
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
if $VC $CHANGES $message; then
|
|
Michal Marek |
8f13a0 |
entry=$(sed -ne '1,2d' -e '/^--*$/!p' -e '/^--*$/q' $CHANGES)
|
|
Michal Marek |
8f13a0 |
entry=${entry##$'\n'}
|
|
Michal Marek |
8f13a0 |
entry=${entry%%$'\n'}
|
|
Michal Marek |
8f13a0 |
echo "$entry" > $message
|
|
Michal Marek |
8f13a0 |
|
|
Michal Marek |
8f13a0 |
while :; do
|
|
Michal Marek |
8f13a0 |
echo
|
|
Michal Marek |
8f13a0 |
sed -e 's:^:| :' $message
|
|
Michal Marek |
8f13a0 |
echo
|
|
Michal Marek |
8f13a0 |
echo -n "Commit with the above changelog entry: ([y]es), [n]o, [e]dit? "
|
|
Michal Marek |
8f13a0 |
read yesno && \
|
|
Michal Marek |
8f13a0 |
case "$yesno" in
|
|
Michal Marek |
8f13a0 |
"" | [yY] | yes)
|
|
Michal Marek |
8f13a0 |
git add $CHANGES
|
|
Michal Marek |
8f13a0 |
# XXX don't commit -a?
|
|
Michal Marek |
8f13a0 |
git commit -a -F $message || exit
|
|
Michal Marek |
edfc6a |
branch=$(get_branch_name)
|
|
Michal Marek |
edfc6a |
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 |
edfc6a |
echo "after testing your changes, run"
|
|
Benjamin Poirier |
775690 |
echo " git push $remote HEAD:users/$user/$branch/for-next"
|
|
Michal Marek |
edfc6a |
esac
|
|
Michal Marek |
8f13a0 |
break ;;
|
|
Michal Marek |
8f13a0 |
[nN] | no)
|
|
Michal Marek |
8f13a0 |
break ;;
|
|
Michal Marek |
8f13a0 |
[eE] | edit)
|
|
Michal Marek |
8f13a0 |
${EDITOR:-vi} $message
|
|
Michal Marek |
8f13a0 |
;;
|
|
Michal Marek |
8f13a0 |
esac
|
|
Michal Marek |
8f13a0 |
done
|
|
Michal Marek |
8f13a0 |
fi
|