[PATCH v3] mq: update bookmarks during qrefresh

Pierre-Yves David pierre-yves.david at logilab.fr
Mon Oct 1 08:18:20 CDT 2012


On Mon, Oct 01, 2012 at 03:04:42PM +0200, David Soria Parra wrote:
> # HG changeset patch
> # User David Soria Parra <dsp at php.net>
> # Date 1349052286 -7200
> # Node ID 11c32b87ef3ef228b5b72f47d82b379429509c10
> # Parent  6d7db5794e8cad7da042b6ae6238116c6e59a4d2
> mq: update bookmarks during qrefresh
> 
> Bookmarks are updated during qpop and qpush, but they are not updated
> during qrefresh. This behaviour makes it hard to work on an evolving
> changeset at the head of a branch. qrefresh should update all bookmarks
> that point to the refreshed commit with the new nodeid.

LGTM
(note: the lack of any kind of transaction for bookmark surprise me every time)

> 
> diff --git a/hgext/mq.py b/hgext/mq.py
> --- a/hgext/mq.py
> +++ b/hgext/mq.py
> @@ -63,7 +63,7 @@
>  from mercurial.node import bin, hex, short, nullid, nullrev
>  from mercurial.lock import release
>  from mercurial import commands, cmdutil, hg, scmutil, util, revset
> -from mercurial import repair, extensions, url, error, phases
> +from mercurial import repair, extensions, url, error, phases, bookmarks
>  from mercurial import patch as patchmod
>  import os, re, errno, shutil
>  
> @@ -1577,6 +1577,7 @@
>              a = list(aa)
>              c = [filter(matchfn, l) for l in (m, a, r)]
>              match = scmutil.matchfiles(repo, set(c[0] + c[1] + c[2] + inclsubs))
> +            bmlist = repo[top].bookmarks()
>  
>              try:
>                  if diffopts.git or diffopts.upgrade:
> @@ -1662,6 +1663,11 @@
>                  for chunk in chunks:
>                      patchf.write(chunk)
>                  patchf.close()
> +
> +                for bm in bmlist:
> +                    repo._bookmarks[bm] = n
> +                bookmarks.write(repo)
> +
>                  self.applied.append(statusentry(n, patchfn))
>              except: # re-raises
>                  ctx = repo[cparents[0]]
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel

-- 
Pierre-Yves David

http://www.logilab.fr/

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20121001/727618f3/attachment.pgp>


More information about the Mercurial-devel mailing list