diff options
Diffstat (limited to 'maintainer-scripts/update_version_git')
-rwxr-xr-x | maintainer-scripts/update_version_git | 85 |
1 files changed, 85 insertions, 0 deletions
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 |