: included from 6002 and others
[ -d .git/refs/tags ] || mkdir -p .git/refs/tags
:> sed.script
tag()
{
_tag=$1
[ -f .git/refs/tags/$_tag ] || error "tag: \"$_tag\" does not exist"
cat .git/refs/tags/$_tag
}
unique_commit()
{
_text=$1
_tree=$2
shift 2
echo $_text | git commit-tree $(tag $_tree) "$@"
}
save_tag()
{
_tag=$1
[ -n "$_tag" ] || error "usage: save_tag tag commit-args ..."
shift 1
"$@" >.git/refs/tags/$_tag
echo "s/$(tag $_tag)/$_tag/g" > sed.script.tmp
cat sed.script >> sed.script.tmp
rm sed.script
mv sed.script.tmp sed.script
}
entag()
{
sed -f sed.script
}
as_author()
{
_author=$1
shift 1
_save=$GIT_AUTHOR_EMAIL
GIT_AUTHOR_EMAIL="$_author"
export GIT_AUTHOR_EMAIL
"$@"
if test -z "$_save"
then
unset GIT_AUTHOR_EMAIL
else
GIT_AUTHOR_EMAIL="$_save"
export GIT_AUTHOR_EMAIL
fi
}
commit_date()
{
_commit=$1
git cat-file commit $_commit | sed -n "s/^committer .*> \([0-9]*\) .*/\1/p"
}
on_committer_date()
{
_date=$1
shift 1
GIT_COMMITTER_DATE="$_date"
export GIT_COMMITTER_DATE
"$@"
unset GIT_COMMITTER_DATE
}
hide_error()
{
"$@" 2>/dev/null
}
check_output()
{
_name=$1
shift 1
if eval "$*" | entag > $_name.actual
then
test_cmp $_name.expected $_name.actual
else
return 1;
fi
}
name_from_description()
{
perl -pe '
s/[^A-Za-z0-9.]/-/g;
s/-+/-/g;
s/-$//;
s/^-//;
y/A-Z/a-z/;
'
}
test_output_expect_success()
{
_description=$1
_test=$2
[ $ _name=$(echo $_description | name_from_description)
cat > $_name.expected
test_expect_success "$_description" "check_output $_name \"$_test\""
}