# HG changeset patch # User Anton Shestakov # Date 1600530571 -7200 # Node ID 5673730db8d54e629d927311f1083b72581ad9e0 # Parent f3870eecf8597580ddaadb71420573c8459bbcd7 evolve: clean merge state when content divergence resolution has no changes This patch backs out b723805d7fe1, which only hid the problem. Usually mergestate is cleared (or should be cleared) when creating a new changeset, but sometimes there are situations when there's nothing to commit. When solving content divergence resulted in no changes and no new changesets were created, mergestate was left untouched. That's a problem because sometimes mergestate contains files with conflicts that were already resolved by user, and such mergestate only applies to the current wdir parent. Since evolve has already dealt with the current wdir parent successfully when it reached this code, this is a good place to clean the mergestate. diff -r f3870eecf859 -r 5673730db8d5 hgext3rd/evolve/evolvecmd.py --- a/hgext3rd/evolve/evolvecmd.py Fri May 08 19:49:07 2020 +0800 +++ b/hgext3rd/evolve/evolvecmd.py Sat Sep 19 17:49:31 2020 +0200 @@ -651,6 +651,7 @@ # no changes, create markers to resolve divergence obsolete.createmarkers(repo, [(otherdiv, (publicdiv,))], operation=b'evolve') + compat.mergestate.clean(repo) return (True, publicnode) with repo.dirstate.parentchange(), compat.parentchange(repo): diff -r f3870eecf859 -r 5673730db8d5 tests/test-evolve-public-content-divergent-discard.t --- a/tests/test-evolve-public-content-divergent-discard.t Fri May 08 19:49:07 2020 +0800 +++ b/tests/test-evolve-public-content-divergent-discard.t Sat Sep 19 17:49:31 2020 +0200 @@ -509,6 +509,7 @@ $ hg par changeset: 5:e800202333a4 + tag: tip parent: 2:155349b645be user: test date: Thu Jan 01 00:00:00 1970 +0000 @@ -626,6 +627,7 @@ $ hg par changeset: 5:e800202333a4 + tag: tip parent: 2:155349b645be user: test date: Thu Jan 01 00:00:00 1970 +0000