From: René Scharfe Date: Sat, 29 Jan 2011 20:26:16 GMT Subject: Re: Can't find the revelant commit with git-log Message-ID: <4D4477E8.8030703@lsrfire.ath.cx> In-Reply-To: <4D437CA0.1070006@lsrfire.ath.cx> Am 29.01.2011 03:34, schrieb René Scharfe: > Am 29.01.2011 01:02, schrieb Junio C Hamano: >> Let's look at the original code before your patch again. >> >> 1. If all the parents of a commit are the same, we will see (tree_same && >> !tree_changed), so we get TREESAME. >> >> 2. If some but not all of the parents are the same, we will see (tree_same >> && tree_changed), and we end up getting TREESAME. >> >> 3. If none of the parents is the same, (!tree_same && tree_changed) holds >> true, and we do not get TREESAME. > > For completeness, a fourth case (!tree_same && !tree_changed), which > would be triggered by commits whose parents are all classified as > REV_TREE_NEW. That's another corner case for sure, but the old code > would mark it TREESAME and your patch changes that. Ugh, forget this part, I failed to notice the /* fallthrough */ at the end of the REV_TREE_NEW case.. René