| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/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 --reverse --color=never)
- NEWCHANGESDISPLAY=$(git log ..$TARGET --oneline --no-merges --reverse --color=always)
- COMMITMSG=$(cat <<END
- Update VE core submodule to $TARGETDESC
- New changes:
- $NEWCHANGES
- END
- )
- # Check out master of VE core
- git checkout $TARGET
- # Commit
- cd ../..
- git commit lib/ve -m "$COMMITMSG" > /dev/null
- if [ "$?" == "1" ]
- then
- echo >&2 "No changes"
- else
- cat >&2 <<END
- Created commit with changes:
- $NEWCHANGESDISPLAY
- END
- fi
|