86 lines
2.0 KiB
Plaintext
86 lines
2.0 KiB
Plaintext
|
#!/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
|