77 lines
1.7 KiB
Bash
Executable File
77 lines
1.7 KiB
Bash
Executable File
#!/bin/bash -eu
|
|
|
|
if [ $# -ne 2 ]; then
|
|
echo >&2 "Usage: $0 REPO VERSION"
|
|
echo >&2 "REPO is the git repository to generate a changelog from"
|
|
echo >&2 "VERSION is the stable version (without leading v)"
|
|
exit 2
|
|
fi
|
|
|
|
# Get base version, i.e. the stable release that a branch started from
|
|
base_version() {
|
|
local ver
|
|
ver="${1%-rc*}"
|
|
case "$ver" in
|
|
*-ckt*)
|
|
ver="${ver%-*}"
|
|
;;
|
|
esac
|
|
echo "$ver"
|
|
}
|
|
|
|
add_update() {
|
|
local base update
|
|
base="$(base_version "$1")"
|
|
update="${1#$base-ckt}"
|
|
if [ "$update" = "$1" ]; then
|
|
update=0
|
|
fi
|
|
update="$((update + $2))"
|
|
if [ $update = 0 ]; then
|
|
echo "$base"
|
|
else
|
|
echo "$base-ckt$update"
|
|
fi
|
|
}
|
|
|
|
# Get next stable update version
|
|
next_update() {
|
|
add_update "$1" 1
|
|
}
|
|
|
|
export GIT_DIR="$1/.git"
|
|
|
|
new_ver="$2"
|
|
cur_pkg_ver="$(dpkg-parsechangelog | sed -n 's/^Version: //p')"
|
|
cur_ver="${cur_pkg_ver%-*}"
|
|
|
|
if [ "$(base_version "$new_ver")" != "$(base_version "$cur_ver")" ]; then
|
|
echo >&2 "$new_ver is not on the same stable series as $cur_ver"
|
|
exit 2
|
|
fi
|
|
|
|
case "$cur_pkg_ver" in
|
|
*~exp*)
|
|
new_pkg_ver="$new_ver-1~exp1"
|
|
;;
|
|
*)
|
|
new_pkg_ver="$new_ver-1"
|
|
;;
|
|
esac
|
|
|
|
# dch insists on word-wrapping everything, so just add the first line initially
|
|
dch -v "$new_pkg_ver" --preserve --multimaint-merge -D UNRELEASED \
|
|
--release-heuristic=changelog 'New upstream stable update:'
|
|
|
|
# Then append the shortlogs with sed
|
|
sed -i '1,/^ --/ { /New upstream stable update:/ { a\
|
|
'"$(
|
|
while [ "v$cur_ver" != "v$new_ver" ]; do
|
|
next_ver="$(next_update "$cur_ver")"
|
|
echo " http://kernel.ubuntu.com/stable/ChangeLog-$next_ver\\"
|
|
git log --reverse --pretty=' - %s\' "v$cur_ver..v$next_ver^"
|
|
cur_ver="$next_ver"
|
|
done)"'
|
|
|
|
} }' debian/changelog
|