[PATCH v3] mq: update bookmarks during qrefresh

Augie Fackler raf at durin42.com
Fri Oct 5 14:05:00 CDT 2012


Also looks good to me.

On Oct 1, 2012, at 8:18 AM, Pierre-Yves David <pierre-yves.david at logilab.fr> wrote:

> 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/
> 
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel



More information about the Mercurial-devel mailing list