blob: 491516b61a85bb6e1948f76b38cab96e37abfa19 [file] [log] [blame]
#!/bin/sh
# Announcement message skelton
#
MASTER=master
tmpbase=/var/tmp/git-announce.$$
trap 'rm -f $tmpbase.*' 0
branch=${1?branch}
previous=${2?previous}
commit=${3-"$1"}
relname=$(git describe "$commit") &&
vername=$(expr "$relname" : 'v\(.*\)') || exit $?
git rev-parse --verify "$previous" >/dev/null || exit $?
case "$branch" in
maint)
kind="The latest maintenance release" ;;
mainto/* | maint-[0-9]*)
kind="A maintenance release" ;;
$MASTER)
kind="The latest feature release" ;;
esac
case "$vername" in
*-rc[0-9]*)
rpmroot=testing
case "$vername" in
*-rc0)
kind="An early preview release"
;;
*)
kind="A release candidate"
;;
esac
for_testing=" for testing"
;;
*)
for_testing=
rpmroot='RPMS/$arch'
;;
esac
vername=$(echo "$vername" | tr "-" ".")
git log --use-mailmap --format='%aN,' "$previous" | sort -u >"$tmpbase.prev"
git log --use-mailmap --format='%aN,' "$previous..$commit" | sort -u >"$tmpbase.this"
comm -12 "$tmpbase.prev" "$tmpbase.this" >"$tmpbase.old"
comm -13 "$tmpbase.prev" "$tmpbase.this" >"$tmpbase.new"
all=$(wc -l <"$tmpbase.this")
new=$(wc -l <"$tmpbase.new")
cnt=$(git rev-list --no-merges "$previous..$commit" | wc -l)
cat <<EOF
To: git@vger.kernel.org
Cc: Linux Kernel <linux-kernel@vger.kernel.org>,
git-packagers@googlegroups.com
Bcc: lwn@lwn.net
Subject: [ANNOUNCE] Git $relname
EOF
(
echo "$kind Git $relname is now available$for_testing at the usual places."
if test "$branch" = $MASTER
then
cat <<-EOF
It is comprised of $cnt non-merge commits since $previous,
contributed by $all people, $new of which are new faces.
EOF
fi
) | fmt -68
cat <<EOF
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/${for_testing:+testing/}
EOF
(
cat <<-EOF
The following public repositories all have a copy of
the '$relname' tag and
EOF
case "$branch" in
maint-* | mainto/*)
echo "some of them have"
;;
esac
echo "the '$branch' branch that the tag points at:"
) | fmt -68
cat <<\EOF
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
EOF
fmt_people () {
# Yes, I don't perform well without 2 or more people.
# Sue me. The heading says "are as follows" anyway ;-).
sed -e '${
s/^/and /
s/,$/./
}' "$1" |
fmt -66 |
sed -e 's/^/ /'
}
if test "$branch" = $MASTER
then
cat <<-EOF
New contributors whose contributions weren't in $previous are as follows.
Welcome to the Git development community!
$(fmt_people "$tmpbase.new")
Returning contributors who helped this release are as follows.
Thanks for your continued support.
$(fmt_people "$tmpbase.old")
EOF
fi
cat <<EOF
----------------------------------------------------------------
EOF
case "$(git ls-tree ${branch} RelNotes)" in
120000' '*)
RelNotes=$(git cat-file blob "${branch}:RelNotes")
;;
*)
RelNotes=RelNotes
;;
esac &&
git cat-file blob "${branch}:$RelNotes" |
case "$relname" in
*-*)
sed -e 's/^Git .* Release Notes$/& (draft)/' \
-e 's/^=============/&========/'
;;
*)
cat
;;
esac
cat <<EOF
----------------------------------------------------------------
Changes since $previous are as follows:
EOF
git log --no-merges "$previous".."$branch" |
git shortlog