> I'm not at all familiar with the protocol areas of the code, but I > tried to read over the patches too. I think it'd have been a bit > easier to understand for someone unfamiliar with this area if there > were separate patches that introduced test_expect_failure showing the > particular failures being fixed, followed by fixes in subsequent > patches. I also noticed a stray newline removal in patch 2. Those > are pretty minor issues, though, and I didn't spot anything > substantial. Thanks Elijah and everyone else for discussing. I don't think I have anything to add to the discussion, but just to address this part, I do try to write my patches in such a way that in each patch, if a test is included, it would fail if the accompanying code change in that patch did not exist. Just in case, I've verified this with my branch by splitting out the tests and code into their own commits, and pushed it onto GitHub [1]. The tip points to the exact same tree as jt/push-negotiation-fixes. [1] https://github.com/jonathantanmy/git/commits/push-negotiation-fixes-split