changeset 17730:6c6987761e42

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.
author David Soria Parra <dsp@php.net>
date Mon, 01 Oct 2012 02:44:46 +0200
parents 9a3cb3ce011e
children c85dbae29684
files hgext/mq.py
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/mq.py	Mon Oct 08 16:21:24 2012 -0500
+++ b/hgext/mq.py	Mon Oct 01 02:44:46 2012 +0200
@@ -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]]