[PATCH 2 of 3 V2] pull: activate a bookmark matching with the destination of the update

Pierre-Yves David pierre-yves.david at ens-lyon.org
Sat Feb 27 08:38:28 EST 2016



On 02/26/2016 12:25 PM, FUJIWARA Katsunori wrote:
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> # Date 1456485725 -32400
> #      Fri Feb 26 20:22:05 2016 +0900
> # Node ID 8bc889107331ed73969ec1e5364bdd380f736299
> # Parent  da6d9ca7f33b1f27c36b9cc6165eac6358f0aee9
> pull: activate a bookmark matching with the destination of the update
>
> Before this patch, "hg pull -u" doesn't activate a bookmark, which
> matches with the explicit destination of the update, even though bare
> "hg update" does so.

In practice, it looks like your are talking about:

   'hg pull -u --rev bmname'

am I right? if so, we should probably update the commit message to have 
the '--rev bmname' bits

This seems to also apply to `hg pull -u URL#bmname too.

If so, I think the change make sense (probably requires a BC) flagging.

If you agree with the aboves, we can probably update the message in flight.

> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -5566,6 +5566,10 @@ def postincoming(ui, repo, modheads, opt
>                   pass # no-op update
>               elif bookmarks.update(repo, [movemarkfrom], repo['.'].node()):
>                   ui.status(_("updating bookmark %s\n") % repo._activebookmark)
> +        elif brev in repo._bookmarks:
> +            if brev != repo._activebookmark:
> +                ui.status(_("(activating bookmark %s)\n") % brev)
> +            bookmarks.activate(repo, brev)
>           return ret
>       if modheads > 1:
>           currentbranchheads = len(repo.branchheads())
> diff --git a/tests/test-pull-update.t b/tests/test-pull-update.t
> --- a/tests/test-pull-update.t
> +++ b/tests/test-pull-update.t
> @@ -61,4 +61,66 @@ Should work:
>     added 1 changesets with 1 changes to 1 files (-1 heads)
>     1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>
> +Similarity between "hg update" and "hg pull -u" in handling bookmark
> +====================================================================
> +
> +Test that updating activates the bookmark, which matches with the
> +explicit destination of the update.
> +
> +  $ echo 4 >> foo
> +  $ hg commit -m "#4"
> +  $ hg bookmark active-after-pull
> +  $ cd ../tt
> +
> +(1) activating by --rev BOOKMARK
> +
> +  $ hg bookmark -f active-before-pull
> +  $ hg bookmarks
> +   * active-before-pull        3:483b76ad4309
> +
> +  $ hg pull -u -r active-after-pull
> +  pulling from $TESTTMP/t (glob)
> +  searching for changes
> +  adding changesets
> +  adding manifests
> +  adding file changes
> +  added 1 changesets with 1 changes to 1 files
> +  adding remote bookmark active-after-pull
> +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  (activating bookmark active-after-pull)
> +
> +  $ hg parents -q
> +  4:f815b3da6163
> +  $ hg bookmarks
> +   * active-after-pull         4:f815b3da6163
> +     active-before-pull        3:483b76ad4309
> +
> +(discard pulled changes)
> +
> +  $ hg update -q 483b76ad4309
> +  $ hg rollback -q
> +
> +(2) activating by URL#BOOKMARK
> +
> +  $ hg bookmark -f active-before-pull
> +  $ hg bookmarks
> +   * active-before-pull        3:483b76ad4309
> +
> +  $ hg pull -u $TESTTMP/t#active-after-pull
> +  pulling from $TESTTMP/t (glob)
> +  searching for changes
> +  adding changesets
> +  adding manifests
> +  adding file changes
> +  added 1 changesets with 1 changes to 1 files
> +  adding remote bookmark active-after-pull
> +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  (activating bookmark active-after-pull)
> +
> +  $ hg parents -q
> +  4:f815b3da6163
> +  $ hg bookmarks
> +   * active-after-pull         4:f815b3da6163
> +     active-before-pull        3:483b76ad4309
> +
>     $ cd ..

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list