summaryrefslogtreecommitdiff
path: root/scripts/merge-new-release.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/merge-new-release.sh')
-rwxr-xr-xscripts/merge-new-release.sh48
1 files changed, 48 insertions, 0 deletions
diff --git a/scripts/merge-new-release.sh b/scripts/merge-new-release.sh
new file mode 100755
index 00000000000..a2763c69bb1
--- /dev/null
+++ b/scripts/merge-new-release.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+case $1 in
+ v*-dts) ;;
+ '')
+ echo >&2 "No version given"
+ exit 1
+ ;;
+ *)
+ echo >&2 "Unexpected version: $1"
+ exit 1
+ ;;
+esac
+
+v=$1
+
+set -e
+
+# Use the date of Linus' originally tagged commit for the merge. This might
+# differ from what the commit that the rewritten tag points to, since the
+# orignal commit may have been discarded.
+export GIT_AUTHOR_DATE=$(git log -1 --format=%ad "${v%-dts}")
+if [ ! "${GIT_AUTHOR_DATE}" ] ; then
+ echo >&2 "Unable to determine commit date for merge"
+ exit 1
+fi
+if [ "${v}" = "v2.6.12-rc2-dts" ] ; then
+ auh="--allow-unrelated-histories"
+fi
+git merge $auh --no-edit "${v}-raw"
+git clean -fdqx
+# Use the date of Linus' original tag for the tag.
+case "${v%-dts}" in
+ v2.6.12*|v2.6.13-rc[123])
+ # Commits from v2.6.12-rc2..v2.6.13-rc3 lacked the date. So use the commit's
+ # date.
+ export GIT_COMMITTER_DATE="${GIT_AUTHOR_DATE}"
+ ;;
+ *)
+ export GIT_COMMITTER_DATE="$(git for-each-ref --format='%(taggerdate)' "refs/tags/${v%-dts}")"
+ ;;
+esac
+if [ ! "${GIT_COMMITTER_DATE}" ] ; then
+ echo >&2 "Unable to determine date for tag"
+ exit 1
+fi
+git tag -s -m "Tagging ${v}" -u 695A46C6 "${v}"
+make -k -j12 -s