> v3 > > * remove errno as an implicit communication mechanism from refs support > completely. Looking at all the patches, it seems that this patch set is about functions in Git code that set errno themselves to indicate the category of failure encountered, and instead of setting errno, we want them to transmit that information through an out param instead. I notice that the cover letter talks about "cleanup" and "remove errno", but that could have been explained in greater detail, I think. As for whether it is a good idea overall, it could be said that errno is idiomatic in C and writing "if (myfunc()) { store_errno = errno; ..." is not much more difficult than "int store_errno; if (myfunc(&store_errno)) { ...". But presumably Han-Wen thinks the opposite, since he wrote this patch set, and I'll defer to his opinion on this since he's working on the ref code and I'm not. Besides that, having the out param is more explicit (which might be better) and permits chaining of such functions (e.g. "if (myfunc(&store_errno) || myotherfunc(&store_errno))"). I'll review this patch set as if this is the approach we want to take.