| #!/bin/bash |
| |
| set -e |
| |
| require_clean_work_tree() { |
| # test if working tree is dirty |
| git rev-parse --verify HEAD > /dev/null && |
| git update-index --refresh && |
| git diff-files --quiet && |
| git diff-index --cached --quiet HEAD || |
| die "Working tree is dirty" |
| } |
| |
| branch=master |
| |
| if [ $# = 1 ]; then |
| repo=$1 |
| elif [ $# = 2 ]; then |
| repo=$1 |
| branch=$2 |
| else |
| echo "usage: $0 <path to local harfbuzz repository> [branch]" |
| exit 1 |
| fi |
| |
| if [ ! -r $repo/.git ]; then |
| echo "The provided path $repo does not point to a git repository." |
| exit 2 |
| fi |
| |
| test -z "$(git rev-parse --show-cdup)" || { |
| exit=$? |
| echo >&2 "You need to run this command from the toplevel of the working tree." |
| exit $exit |
| } |
| |
| require_clean_work_tree |
| |
| url=`git --git-dir=$repo/.git config remote.origin.url` |
| |
| git ls-files src/3rdparty/harfbuzz | git update-index --force-remove --stdin |
| |
| git fetch $repo $branch |
| |
| commit=`git rev-parse FETCH_HEAD` |
| tree=`git cat-file commit FETCH_HEAD|grep "^tree" | awk '{print $2}'` |
| |
| git read-tree --prefix=src/3rdparty/harfbuzz $tree |
| |
| git checkout src/3rdparty/harfbuzz |
| |
| git status |
| |
| cat >commitlog.txt <<EOT |
| Updated Harfbuzz from $url to $commit |
| EOT |
| |
| echo |
| echo "Wrote commitlog.txt. Use with" |
| echo |
| echo " git commit -e -F commitlog.txt" |
| echo |
| echo "to commit your changes" |