The problem's more with the callback `libgit2` will do if it needs authentication (that's handled by the private `GTCredAcquireCallback` below). Agreed, it depends on the amount of wrapping we want, but since we don't know the needed authentication type in advance (`GTCredType` in the public header), there's 3 way to initialize the needed `git_cred` (one of which completely arcane). So I think it's better to have it abstracted away as a nice Objective-C object. IMHO even if it's just needed by clone, fetch and push, that's worth it.