64 lines
1.3 KiB
Plaintext
64 lines
1.3 KiB
Plaintext
|
#!/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"
|