Can we not just `git__free(entry)` in cleanup instead of special casing this in every single failure scenario?