79 lines
1.9 KiB
Bash
Executable File
79 lines
1.9 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 Linus stable release that a version is based on
|
|
base_version() {
|
|
local ver
|
|
ver="${1%-rc*}"
|
|
case "$ver" in
|
|
2.6.*.* | [3-9].*.* | ??.*.*)
|
|
ver="${ver%.*}"
|
|
;;
|
|
esac
|
|
echo "$ver"
|
|
}
|
|
|
|
add_update() {
|
|
local base update
|
|
base="$(base_version "$1")"
|
|
update="${1#$base.}"
|
|
if [ "$update" = "$1" ]; then
|
|
update=0
|
|
fi
|
|
update="$((update + $2))"
|
|
if [ $update = 0 ]; then
|
|
echo "$base"
|
|
else
|
|
echo "$base.$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
|
|
*~experimental*)
|
|
new_pkg_ver="$new_ver-1~experimental.1"
|
|
;;
|
|
*)
|
|
new_pkg_ver="$new_ver-1"
|
|
;;
|
|
esac
|
|
|
|
# dch insists on word-wrapping everything, so just add the URLs initially
|
|
dch -v "$new_pkg_ver" --preserve --multimaint-merge -D UNRELEASED \
|
|
--release-heuristic=changelog "$(
|
|
echo "New upstream stable update: "
|
|
while [ "v$cur_ver" != "v$new_ver" ]; do
|
|
cur_ver="$(next_update "$cur_ver")"
|
|
echo "http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-$cur_ver"
|
|
done)"
|
|
|
|
# Then insert the shortlogs with sed
|
|
while [ "v$cur_ver" != "v$new_ver" ]; do
|
|
next_ver="$(next_update "$cur_ver")"
|
|
sed -i '/ChangeLog-'"${next_ver//./\\.}"'/a\
|
|
'"$(git log --reverse --pretty=' - %s\' "v$cur_ver..v$next_ver^")"'
|
|
' debian/changelog
|
|
cur_ver="$next_ver"
|
|
done
|