test.sh logs assertions when not summarizing
Sectionize test.sh
test.sh checks commit info besides tree hashes

My initial idea for implementing commit_info() was

    git cat-file -p $1 | grep -v '^\(commit\|tree\|parent\) '

which is clearly bad because it'll remove lines in the commit message
starting with the word 'commit', 'tree', or 'parent'. I couldn't think
of a simple way to, like, stop removing lines after the last line that
starts with 'parent' or anything like that, but

    git log $1 --no-walk --pretty=raw | grep -v '^\(commit\|tree\|parent\) '

should work because --pretty=raw apparently indents every nonempty line
of the commit message by 4 spaces, but that's not documented anywhere,
plus having git-log output stuff we don't want then forking a grep
process to strip it out seems dumb.

The solution I ended up with takes a page from git-subtree's book. It
has the downside of being more opaque and requiring reading the git-log
manpage to really understand, but I think it's overall the best choice.
test.sh: Factor out assert_is_subcommit_of
Fix 'split' when not at toplevel (+ test case)