libgit2/libgit2 — pull request #904 by arrbee (2012-08-27 18:57:54+00:00)
Title: Make git_object_peel a bit smarter

Inspired by PR #903...

This expands the types of peeling that `git_object_peel` knows how to do to include TAG -> BLOB peeling, and makes the errors slightly more consistent depending on the situation. It also adds a new special behavior where peeling to ANY will peel until the object type changes (e.g. chases TAGs to a non-TAG).

Using this expanded peeling, this replaces peeling code that was embedded in `git_tag_peel` and `git_reset` for a net reduction in lines of code (even with new units tests).