Submitter | Pierre-Yves David |
---|---|
Date | Oct. 13, 2015, 6:52 p.m. |
Message ID | <88139d0257c74a163355.1444762334@marginatus.alto.octopoid.net> |
Download | mbox | patch |
Permalink | /patch/11018/ |
State | Accepted |
Headers | show |
Comments
On Tue, Oct 13, 2015 at 11:52:14AM -0700, Pierre-Yves David wrote: > # HG changeset patch > # User Pierre-Yves David <pierre-yves.david@fb.com> > # Date 1443513806 25200 > # Tue Sep 29 01:03:26 2015 -0700 > # Node ID 88139d0257c74a16335585380e0f873efcdffbed > # Parent ae5f7be2b4ab35b844b792b5fc48f164a3656718 > # EXP-Topic defaultdest > # Available At http://hg.netv6.net/marmoute-wip/mercurial/ > # hg pull http://hg.netv6.net/marmoute-wip/mercurial/ -r 88139d0257c7 > destupdate: also include bookmark related logic queued these, thanks for working with me on the documentation > > For the same reason, we move the bookmark related update logic into the > 'destupdate' function. This requires to extend the returns of the function to > include the bookmark that needs to move (more or less) and the bookmark to > activate at the end of the function. See function documentation for details on > this returns. > > diff --git a/mercurial/commands.py b/mercurial/commands.py > --- a/mercurial/commands.py > +++ b/mercurial/commands.py > @@ -6565,10 +6565,11 @@ def update(ui, repo, node=None, rev=None > > See :hg:`help dates` for a list of formats valid for -d/--date. > > Returns 0 on success, 1 if there are unresolved files. > """ > + movemarkfrom = None > if rev and node: > raise error.Abort(_("please specify just one revision")) > > if rev is None or rev == '': > rev = node > @@ -6580,13 +6581,10 @@ def update(ui, repo, node=None, rev=None > if date: > if rev is not None: > raise error.Abort(_("you can't specify a revision and a date")) > rev = cmdutil.finddate(ui, repo, date) > > - # with no argument, we also move the active bookmark, if any > - rev, movemarkfrom = bookmarks.calculateupdate(ui, repo, rev) > - > # if we defined a bookmark, we have to remember the original name > brev = rev > rev = scmutil.revsingle(repo, rev, rev).rev() > > if check and clean: > @@ -6594,11 +6592,12 @@ def update(ui, repo, node=None, rev=None > ) > > if check: > cmdutil.bailifchanged(repo, merge=False) > if rev is None: > - rev = destutil.destupdate(repo, clean=clean, check=check) > + updata = destutil.destupdate(repo, clean=clean, check=check) > + rev, movemarkfrom, brev = updata > > repo.ui.setconfig('ui', 'forcemerge', tool, 'update') > > if clean: > ret = hg.clean(repo, rev) > diff --git a/mercurial/destutil.py b/mercurial/destutil.py > --- a/mercurial/destutil.py > +++ b/mercurial/destutil.py > @@ -5,29 +5,43 @@ > # This software may be used and distributed according to the terms of the > # GNU General Public License version 2 or any later version. > > from .i18n import _ > from . import ( > + bookmarks, > error, > obsolete, > ) > > def destupdate(repo, clean=False, check=False): > """destination for bare update operation > + > + return (rev, movemark, activemark) > + > + - rev: the revision to update to, > + - movemark: node to move the active bookmark from > + (cf bookmark.calculate update), > + - activemark: a bookmark to activate at the end of the update. > """ > - # Here is where we should consider bookmarks, divergent bookmarks, and tip > - # of current branch; but currently we are only checking the branch tips. > node = None > wc = repo[None] > p1 = wc.p1() > - try: > - node = repo.branchtip(wc.branch()) > - except error.RepoLookupError: > - if wc.branch() == 'default': # no default branch! > - node = repo.lookup('tip') # update to tip > - else: > - raise error.Abort(_("branch %s not found") % wc.branch()) > + activemark = None > + > + # we also move the active bookmark, if any > + node, movemark = bookmarks.calculateupdate(repo.ui, repo, None) > + if node is not None: > + activemark = node > + > + if node is None: > + try: > + node = repo.branchtip(wc.branch()) > + except error.RepoLookupError: > + if wc.branch() == 'default': # no default branch! > + node = repo.lookup('tip') # update to tip > + else: > + raise error.Abort(_("branch %s not found") % wc.branch()) > > if p1.obsolete() and not p1.children(): > # allow updating to successors > successors = obsolete.successorssets(repo, p1.node()) > > @@ -74,6 +88,6 @@ def destupdate(repo, clean=False, check= > elif not check: # destination is not a descendant. > msg = _("not a linear update") > hint = _("merge or update --check to force update") > raise error.Abort(msg, hint=hint) > > - return rev > + return rev, movemark, activemark > diff --git a/mercurial/merge.py b/mercurial/merge.py > --- a/mercurial/merge.py > +++ b/mercurial/merge.py > @@ -1025,11 +1025,12 @@ def update(repo, node, branchmerge, forc > pas = [None] > if ancestor is not None: > pas = [repo[ancestor]] > > if node is None: > - node = repo[destutil.destupdate(repo)].node() > + rev, _mark, _act = destutil.destupdate(repo) > + node = repo[rev].node() > > overwrite = force and not branchmerge > > p2 = repo[node] > if pas[0] is None: > _______________________________________________ > Mercurial-devel mailing list > Mercurial-devel@selenic.com > https://selenic.com/mailman/listinfo/mercurial-devel
Patch
diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -6565,10 +6565,11 @@ def update(ui, repo, node=None, rev=None See :hg:`help dates` for a list of formats valid for -d/--date. Returns 0 on success, 1 if there are unresolved files. """ + movemarkfrom = None if rev and node: raise error.Abort(_("please specify just one revision")) if rev is None or rev == '': rev = node @@ -6580,13 +6581,10 @@ def update(ui, repo, node=None, rev=None if date: if rev is not None: raise error.Abort(_("you can't specify a revision and a date")) rev = cmdutil.finddate(ui, repo, date) - # with no argument, we also move the active bookmark, if any - rev, movemarkfrom = bookmarks.calculateupdate(ui, repo, rev) - # if we defined a bookmark, we have to remember the original name brev = rev rev = scmutil.revsingle(repo, rev, rev).rev() if check and clean: @@ -6594,11 +6592,12 @@ def update(ui, repo, node=None, rev=None ) if check: cmdutil.bailifchanged(repo, merge=False) if rev is None: - rev = destutil.destupdate(repo, clean=clean, check=check) + updata = destutil.destupdate(repo, clean=clean, check=check) + rev, movemarkfrom, brev = updata repo.ui.setconfig('ui', 'forcemerge', tool, 'update') if clean: ret = hg.clean(repo, rev) diff --git a/mercurial/destutil.py b/mercurial/destutil.py --- a/mercurial/destutil.py +++ b/mercurial/destutil.py @@ -5,29 +5,43 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. from .i18n import _ from . import ( + bookmarks, error, obsolete, ) def destupdate(repo, clean=False, check=False): """destination for bare update operation + + return (rev, movemark, activemark) + + - rev: the revision to update to, + - movemark: node to move the active bookmark from + (cf bookmark.calculate update), + - activemark: a bookmark to activate at the end of the update. """ - # Here is where we should consider bookmarks, divergent bookmarks, and tip - # of current branch; but currently we are only checking the branch tips. node = None wc = repo[None] p1 = wc.p1() - try: - node = repo.branchtip(wc.branch()) - except error.RepoLookupError: - if wc.branch() == 'default': # no default branch! - node = repo.lookup('tip') # update to tip - else: - raise error.Abort(_("branch %s not found") % wc.branch()) + activemark = None + + # we also move the active bookmark, if any + node, movemark = bookmarks.calculateupdate(repo.ui, repo, None) + if node is not None: + activemark = node + + if node is None: + try: + node = repo.branchtip(wc.branch()) + except error.RepoLookupError: + if wc.branch() == 'default': # no default branch! + node = repo.lookup('tip') # update to tip + else: + raise error.Abort(_("branch %s not found") % wc.branch()) if p1.obsolete() and not p1.children(): # allow updating to successors successors = obsolete.successorssets(repo, p1.node()) @@ -74,6 +88,6 @@ def destupdate(repo, clean=False, check= elif not check: # destination is not a descendant. msg = _("not a linear update") hint = _("merge or update --check to force update") raise error.Abort(msg, hint=hint) - return rev + return rev, movemark, activemark diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -1025,11 +1025,12 @@ def update(repo, node, branchmerge, forc pas = [None] if ancestor is not None: pas = [repo[ancestor]] if node is None: - node = repo[destutil.destupdate(repo)].node() + rev, _mark, _act = destutil.destupdate(repo) + node = repo[rev].node() overwrite = force and not branchmerge p2 = repo[node] if pas[0] is None: