Am 16.05.10 18:16, schrieb Timothy Brownawell: > On 05/16/2010 10:14 AM, Stephen Leake wrote: >> Stephen Leake<stephen_le...@stephe-leake.org> writes: >> >>> I encountered this bug at work again this week. I have more clues about >>> what causes it, and I'll work on a reproducer. >>> >>> In the meantime, I've implemented a check in 'db check', and a fix in >>> 'db regenerate_caches'. >> >> I now have a reproducer for this bug; see tests/branch_leaves_sync_bug/ >> >> The bug occurs when two developers each do the same merge, one developer >> adds another commit, and then they sync. The merge revision and the new >> commit revision are both left in branch_leaves; the merge revision >> should have been deleted. I'm guessing the merge revision was added back >> during the sync. >> >> The bug does not occur if the two "developers" use the same authorname >> and key. >> >> I have not started trying to find the bug; I'm just basking in finding a >> reproducer :). > > | Abe does a merge > | Beth does an identical merge > | Beth commit a child of that merge > | Beth pulls from Abe > > This results in Beth getting a new branch cert on the merge revision, > which is an ancestor of the current leaves of its branch. The logic in > database::record_as_branch_leaf() didn't recognize that this could > happen, but thought that a new cert on anything that wasn't already a > leaf would make it a leaf. It should be fixed now.
Very cool, thanks to you two for tracking down and fixing the problem! Thomas. -- GPG-Key 0x160D1092 | tommyd3...@jabber.ccc.de | http://thomaskeller.biz Please note that according to the EU law on data retention, information on every electronic information exchange might be retained for a period of six months or longer: http://www.vorratsdatenspeicherung.de/?lang=en
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Monotone-devel mailing list Monotone-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/monotone-devel