blob: b1b5f4c9cf97548a787f9c2430663e4db68386ec [file] [log] [blame]
#!/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