From 18cb6ac26fd820f2f00a8c758da09bc71864d5e1 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 13 Jan 2020 12:29:02 +0000 Subject: Replace update_version_svn with update_version_git. This patch replaces the update_version_svn script, that updates the DATESTAMP files from cron, with update_version_git. * update_version_git: New file. * update_version:svn: Remove. * crontab: Use update_version_git. --- maintainer-scripts/update_version_git | 85 +++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100755 maintainer-scripts/update_version_git (limited to 'maintainer-scripts/update_version_git') diff --git a/maintainer-scripts/update_version_git b/maintainer-scripts/update_version_git new file mode 100755 index 0000000..b1b5f4c --- /dev/null +++ b/maintainer-scripts/update_version_git @@ -0,0 +1,85 @@ +#!/bin/sh +# +# Update the current version date in all files in the tree containing +# it. Consider all single-component-version release branches except +# those matching the regular expression in $IGNORE_BRANCHES, and also +# consider those branches listed in the space separated list in +# $ADD_BRANCHES. + +GITROOT=${GITROOT:-"/git/gcc.git"} +IGNORE_BRANCHES='releases/gcc-(.*\..*|5|6|7)' +ADD_BRANCHES='master' + +# Run this from /tmp. +export GITROOT +BASEDIR=/tmp/$$ +/bin/rm -rf "$BASEDIR" +/bin/mkdir "$BASEDIR" +cd "$BASEDIR" + +GIT=${GIT:-/usr/local/bin/git} + +# Compute the branches which we should update. +BRANCHES=`(cd $GITROOT \ + && ${GIT} for-each-ref --format='%(refname)' \ + 'refs/heads/releases/gcc-*') \ + | sed -e 's/refs\/heads\///' \ + | egrep -v $IGNORE_BRANCHES` +# Always update the mainline. +BRANCHES="${ADD_BRANCHES} ${BRANCHES}" + +# This is put into the datestamp files. +CURR_DATE=`/bin/date +"%Y%m%d"` + +datestamp_FILES="gcc/DATESTAMP" + + +# Assume all will go well. +RESULT=0 +SUBDIR=$BASEDIR/gcc +for BRANCH in $BRANCHES; do + echo "Working on \"$BRANCH\"." + # Check out the files on the branch. + if [ -d "$SUBDIR" ]; then + cd "$SUBDIR" + ${GIT} pull -q + ${GIT} checkout -q "$BRANCH" + else + ${GIT} clone -q -b "$BRANCH" "$GITROOT" "$SUBDIR" + fi + + # There are no files to commit yet. + COMMIT_FILES="" + + cd "$SUBDIR" + for file in $datestamp_FILES; do + if test -f $file; then + echo "${CURR_DATE}" > $file.new + + if /usr/bin/cmp -s $file $file.new; then + rm -f $file.new + else + mv -f $file.new $file + COMMIT_FILES="$COMMIT_FILES $file" + fi + fi + done + + if test -n "$COMMIT_FILES"; then + for i in $COMMIT_FILES; do + echo "Attempting to commit $i" + if ${GIT} commit -m "Daily bump." $i; then + if ! ${GIT} push origin "$BRANCH"; then + # If we could not push the files, indicate failure. + RESULT=1 + fi + else + # If we could not commit the files, indicate failure. + RESULT=1 + fi + done + fi +done + +/bin/rm -rf $BASEDIR +exit $RESULT -- cgit v1.1