#!/bin/bash -eu # This script generates a commit that updates the lib/ve submodule # ./bin/updateSubmodule.sh updates to master # ./bin/updateSubmodule.sh hash updates to specified hash # cd to the VisualEditor directory cd $(cd $(dirname $0)/..; pwd) # Check that both working directories are clean if git status -uno --ignore-submodules | grep -i changes > /dev/null then echo >&2 "Working directory must be clean" exit 1 fi cd lib/ve if git status -uno --ignore-submodules | grep -i changes > /dev/null then echo >&2 "lib/ve working directory must be clean" exit 1 fi cd ../.. git fetch origin # Create sync-repos branch if needed and reset it to master git checkout -B sync-repos origin/master git submodule update cd lib/ve git fetch origin # Figure out what to set the submodule to if [ -n "${1:-}" ] then TARGET="$1" TARGETDESC="$1" else TARGET=origin/master TARGETDESC="master ($(git rev-parse --short origin/master))" fi # Generate commit summary # TODO recurse NEWCHANGES=$(git log ..$TARGET --oneline --no-merges --topo-order --reverse --color=never) TASKS=$(git log ..$TARGET --no-merges --format=format:%B | grep "Bug: T" | sort | uniq) NEWCHANGESDISPLAY=$(git log ..$TARGET --oneline --no-merges --reverse --color=always) COMMITMSG=$(cat < /dev/null if [ "$?" == "1" ] then echo >&2 "No changes" else cat >&2 <