On Wed, Oct 30, 2019 at 11:44:23AM +0900, Junio C Hamano wrote: > Jeff King <peff@xxxxxxxx> writes: > > > This is definitely a strict improvement over the current behavior > > (though I agree with Dscho's comments on the error message). A few > > further thoughts: > > > > - we'll have successfully completed the rest of the clone at this > > point. Should we leave the objects and refs in place to allow the > > user to fix it up, as we do when "git checkout" fails? > > > > We'd have to leave _something_ in HEAD for it to be a valid repo. I > > guess just "refs/heads/master" would be fine, or perhaps we could > > fall back to whatever the other side had in their HEAD (i.e., > > pretending that "-b" wasn't specified). > > Do we know for sure that the object at HEAD on the other side is a > commit, or do we need to prepare for a case where it is not? I > suspect it is the latter. HEAD needs to exist and point at a ref > that is in refs/heads/ hierarchy, and the ref can even be unborn, so > falling back on 'master' sounds like a good position. Yeah, I don't think that we do. This is the same as the case I mentioned later, and it should be handled in all three arms of the conditional. Davide, do you have an interest in trying to make these code paths a bit more robust? -Peff