# # # patch "NEWS" # from [a5c303d1604b8e394608ee7a8fdfd03e774a02c3] # to [97bfa0bb5832ad2bdc6496cdc5f3c82763ddcdc0] # # patch "database.cc" # from [5a61650edb2b4f71f83c39f327062de5ed827485] # to [32ecd9a6023488099381d1a4f55b566fbaf69f75] # ============================================================ --- NEWS a5c303d1604b8e394608ee7a8fdfd03e774a02c3 +++ NEWS 97bfa0bb5832ad2bdc6496cdc5f3c82763ddcdc0 @@ -79,13 +79,16 @@ xxx xxx xx xx:xx:xx UTC 2010 interrupted (^C). This was broken in 0.47 when it was fixed to not throw an exception on being interrupted. - - In 0.46 and 0.47, monotone could sometimes get confused about which - revisions were the heads of a particular branch. This would happen - when a new branch cert was added to a revision that was an ancestor - of one or more of the current heads of the branch, most commonly - during netsync when multiple people had performed identical merges. - This is fixed now. If your database currently gives incorrect 'heads' - results, you can fix it by either running 'mtn db regenerate_caches'. + - In 0.46 and 0.47, monotone could sometimes get confused + about which revisions were the heads of a particular branch. + This would happen when a new branch cert was added to a + revision that was an ancestor of one or more of the current + heads of the branch, most commonly during netsync when + multiple people had performed identical merges. This is + fixed now. 'db check' will identify the problem; if your + database currently gives incorrect 'heads' results, or 'mtn + bug' on 'merge', you can fix it by running 'mtn db + regenerate_caches'. Other ============================================================ --- database.cc 5a61650edb2b4f71f83c39f327062de5ed827485 +++ database.cc 32ecd9a6023488099381d1a4f55b566fbaf69f75 @@ -3648,6 +3648,8 @@ database::record_as_branch_leaf(cert_val } // are we really a leaf (ie, not an ancestor of an existing leaf)? + // + // see tests/branch_leaves_sync_bug for a scenario that requires this. if (!some_ancestor_was_leaf) { bool really_a_leaf = true;