[PATCH 2 of 2 evolve-ext] evolve: extract logic to new method _finalizerelocate
Laurent Charignon
lcharignon at fb.com
Mon Dec 14 19:41:37 CST 2015
Hi,
These two patches look good to me and offer useful refactoring with the
goal of having a separate evolve state.
Pierre-Yves, feel free to review and push them to main if it works for you.
Thanks,
Laurent
On 12/14/15, 5:26 PM, "Mercurial-devel on behalf of Shusen LIU"
<mercurial-devel-bounces at selenic.com on behalf of liushusen at fb.com> wrote:
># HG changeset patch
># User Shusen LIU <liushusen at fb.com>
># Date 1450142471 28800
># Mon Dec 14 17:21:11 2015 -0800
># Node ID 0ce293362d9b8536cc0cd01568b168352be948a6
># Parent 0f231df1aba960973ae8cd1536632f63cb55372a
>evolve: extract logic to new method _finalizerelocate
>
>This patch introduces a new method _finalizerelocate to finalize current
>state
>after merge states in relocate method.
>This simplifies the code of the method relocate and allows us to modify it
>later to support a continued keywork to implement evolve state.
>
>diff --git a/hgext/evolve.py b/hgext/evolve.py
>--- a/hgext/evolve.py
>+++ b/hgext/evolve.py
>@@ -966,20 +966,7 @@
> exc.__class__ = LocalMergeFailure
> raise
> oldbookmarks = repo.nodebookmarks(nodesrc)
>- if nodenew is not None:
>- phases.retractboundary(repo, tr, destphase, [nodenew])
>- obsolete.createmarkers(repo, [(repo[nodesrc],
>(repo[nodenew],))])
>- for book in oldbookmarks:
>- repo._bookmarks[book] = nodenew
>- else:
>- obsolete.createmarkers(repo, [(repo[nodesrc], ())])
>- # Behave like rebase, move bookmarks to dest
>- for book in oldbookmarks:
>- repo._bookmarks[book] = dest.node()
>- for book in destbookmarks: # restore bookmark that rebase move
>- repo._bookmarks[book] = dest.node()
>- if oldbookmarks or destbookmarks:
>- repo._bookmarks.recordchange(tr)
>+ _finalizerelocate(repo, orig, dest, nodenew, tr)
> tr.close()
> finally:
> tr.release()
>@@ -3675,3 +3662,23 @@
> finally:
> repo.ui.restoreconfig(backup)
> return nodenew
>+
>+def _finalizerelocate(repo, orig, dest, nodenew, tr):
>+ destbookmarks = repo.nodebookmarks(dest.node())
>+ nodesrc = orig.node()
>+ destphase = repo[nodesrc].phase()
>+ oldbookmarks = repo.nodebookmarks(nodesrc)
>+ if nodenew is not None:
>+ phases.retractboundary(repo, tr, destphase, [nodenew])
>+ obsolete.createmarkers(repo, [(repo[nodesrc], (repo[nodenew],))])
>+ for book in oldbookmarks:
>+ repo._bookmarks[book] = nodenew
>+ else:
>+ obsolete.createmarkers(repo, [(repo[nodesrc], ())])
>+ # Behave like rebase, move bookmarks to dest
>+ for book in oldbookmarks:
>+ repo._bookmarks[book] = dest.node()
>+ for book in destbookmarks: # restore bookmark that rebase move
>+ repo._bookmarks[book] = dest.node()
>+ if oldbookmarks or destbookmarks:
>+ repo._bookmarks.recordchange(tr)
>_______________________________________________
>Mercurial-devel mailing list
>Mercurial-devel at selenic.com
>https://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list