diff options
Diffstat (limited to 'maintainer-scripts/update_version_svn')
-rwxr-xr-x | maintainer-scripts/update_version_svn | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/maintainer-scripts/update_version_svn b/maintainer-scripts/update_version_svn new file mode 100755 index 000000000..20fd2b194 --- /dev/null +++ b/maintainer-scripts/update_version_svn @@ -0,0 +1,85 @@ +#!/bin/sh +# +# Update the current version date in all files in the tree containing +# it. Consider all 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. + +SVNROOT=${SVNROOT:-"file:///svn/gcc"} +IGNORE_BRANCHES='gcc-(2_95|3_0|3_1|3_2|3_3|3_4|4_0|4_1|4_2)-branch' +ADD_BRANCHES='HEAD' + +# Run this from /tmp. +export SVNROOT +/bin/rm -rf /tmp/$$ +/bin/mkdir /tmp/$$ +cd /tmp/$$ + +SVN=${SVN:-/usr/bin/svn} + +# Compute the branches which we should update. +BRANCHES=`$SVN ls $SVNROOT/branches \ + | sed -e 's/\///' \ + | egrep 'gcc-[0-9]+_[0-9]+-branch$' \ + | egrep -v $IGNORE_BRANCHES` +# Always update the mainline. +BRANCHES="${BRANCHES} ${ADD_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 +for BRANCH in $BRANCHES; do + echo "Working on \"$BRANCH\"." + # Check out the files on the branch. HEAD is in a different namespace. + if test "$BRANCH" = HEAD; then + SVNROOT2=${SVNROOT}/trunk + else + SVNROOT2=${SVNROOT}/branches/${BRANCH} + fi + + for i in $datestamp_FILES; do + ${SVN} -q co -N ${SVNROOT2}/`dirname $i` `basename $i` + done + + # There are no files to commit yet. + COMMIT_FILES="" + + for file in $datestamp_FILES; do + dirname=`basename $file` + file=`basename $file` + file="$dirname/$file" + 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 ! ${SVN} commit -m "Daily bump." $i; then + # If we could not commit the files, indicate failure. + RESULT=1 + fi + done + fi + + # Remove the files. + for i in $datestamp_FILES; do + rm -rf /tmp/$$/`basename $i` + done +done + +/bin/rm -rf /tmp/$$ +exit $RESULT |