"Shawn O. Pearce" <spearce@xxxxxxxxxxx> writes: > JGit depends on the fact that the refs list is sorted by the remote > peer, and that foo^{} immediately follows foo. I don't think this > has ever been documented, but all sane implementations[1] follow > this convention and it may be something we could simply codify as > part of the protocol standard. > > [1] Sane implementations are defined to be what I consider to be > the two stable implementations in deployed use, git.git and JGit. There is no strong reason for ordering of refs between themselves (i.e. refs/heads/master comes before refs/heads/next) other than the fact that we sort and then walk due to packed-refs reasons. But emitting tag X and then its peeled representation X^{} immediately after it is quite fundamental in the way how anybody sane would implement ls-remote. There is no reason to violate the established order other than "I could do so", and in order not to show X and X^{} next to each other, you would need _more_ processing. So I would say it is very safe to assume this. Also, you might not have noticed, but my illustration patch was merely using it as a hint to optimize, and if the last ref we saw was not X when it is turn to handle X^{}, it simply falled back to the original logic, iow, the patch never compromised the correctness. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html