summaryrefslogtreecommitdiffstats
path: root/util/harfbuzz/update-harfbuzz
diff options
context:
space:
mode:
Diffstat (limited to 'util/harfbuzz/update-harfbuzz')
-rwxr-xr-xutil/harfbuzz/update-harfbuzz63
1 files changed, 63 insertions, 0 deletions
diff --git a/util/harfbuzz/update-harfbuzz b/util/harfbuzz/update-harfbuzz
new file mode 100755
index 0000000000..29891b6fe7
--- /dev/null
+++ b/util/harfbuzz/update-harfbuzz
@@ -0,0 +1,63 @@
+#!/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"