[PATCH 2 of 2 evolve-ext:stable] evolve: active bookmark should move when using prev/next (#37)

Olle olle.lundberg at gmail.com
Thu Mar 27 16:45:17 CDT 2014


On Thu, Mar 27, 2014 at 7:27 PM, Pierre-Yves David <
pierre-yves.david at ens-lyon.org> wrote:

>
>
> On 03/26/2014 04:48 PM, Olle Lundberg wrote:
>
>> # HG changeset patch
>> # User Olle Lundberg <geek at nerd.sh>
>> # Date 1395874725 -3600
>> #      Wed Mar 26 23:58:45 2014 +0100
>> # Branch stable
>> # Node ID 02d88a51cdb9e5d2dbcad01a721fc8cff51c7425
>> # Parent  37c58378ad6bd3b82905f2aec3a6658a1242d3ee
>> evolve: active bookmark should move when using prev/next (#37)
>>
>> This patch adds a new default argument to _bookmarksupdater that
>> controls whether we move inactive bookmarks for a current node or
>> not. This change does not break existing usage, but will allow us
>> to move active bookmarks when we traverse the history with previous
>> and next.
>>
>> The #37 references the bitbucket issue for mutable-history, that
>> can be found here:
>> https://bitbucket.org/marmoute/mutable-history/issue/37/
>>
>> diff --git a/hgext/evolve.py b/hgext/evolve.py
>> --- a/hgext/evolve.py
>> +++ b/hgext/evolve.py
>> @@ -786,21 +786,23 @@
>>       except util.Abort:
>>           # Invalidate the previous setparents
>>           repo.dirstate.invalidate()
>>           raise
>>
>> -def _bookmarksupdater(repo, oldid):
>> +def _bookmarksupdater(repo, oldid, moveinactive=True):
>>       """Return a callable update(newid) updating the current bookmark
>>       and bookmarks bound to oldid to newid.
>>       """
>>       bm = bookmarks.readcurrent(repo)
>>       def updatebookmarks(newid):
>>           dirty = False
>>           if bm:
>>               repo._bookmarks[bm] = newid
>>               dirty = True
>> -        oldbookmarks = repo.nodebookmarks(oldid)
>> +        oldbookmarks = None
>> +        if moveinactive:
>> +            oldbookmarks = repo.nodebookmarks(oldid)
>>           if oldbookmarks:
>>               for b in oldbookmarks:
>>                   repo._bookmarks[b] = newid
>>               dirty = True
>>           if dirty:
>>
>
> I'm not sure this belong to _bookmarksupdater, the function is more
> intended to update bookmark afater a rewriting, ho just letting the active
> bookmark follow the current position.


I think it does. Perhaps with an updated docstring. The logic is more or
less the same, the interface does not get any more complicated (the
complexity of the code stays about the same too). Would you prefer a
separate function with a refactored _bookmarksupdater?


>  @@ -1281,11 +1283,14 @@
>>
>>       parents = wparents[0].parents()
>>       displayer = cmdutil.show_changeset(ui, repo, {'template':
>> shorttemplate})
>>       if len(parents) == 1:
>>           p = parents[0]
>> +        bmupdate = _bookmarksupdater(repo, wparents[0].node(),
>> +                                     moveinactive=False)
>>           hg.update(repo, p.rev())
>> +        bmupdate(p.node())
>>           displayer.show(p)
>>           return 0
>>       else:
>>           for p in parents:
>>               displayer.show(p)
>> @@ -1307,11 +1312,14 @@
>>       if not children:
>>           ui.warn(_('no non-obsolete children\n'))
>>           return 1
>>       if len(children) == 1:
>>           c = children[0]
>> +        bmupdate = _bookmarksupdater(repo, wparents[0].node(),
>> +                                     moveinactive=False)
>>           hg.update(repo, c.rev())
>> +        bmupdate(c.node())
>>           displayer.show(c)
>>           return 0
>>       else:
>>           for c in children:
>>               displayer.show(c)
>> diff --git a/tests/test-bookmarks.t b/tests/test-bookmarks.t
>> new file mode 100644
>> --- /dev/null
>> +++ b/tests/test-bookmarks.t
>>
>
>
> Thanks for the extensive testing. But they need a bit more documentation
> to be maintable.
>

Will update with more sections and comments.

>
> Also consider a custom log template for more compact output.


I think I will skip most of the hg log -G and use hg bookmarks instead.


>
>
>
> --
> Pierre-Yves David
>



-- 
Olle
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20140327/47f2b3ff/attachment.html>


More information about the Mercurial-devel mailing list