# HG changeset patch # User Ryan McElroy # Date 1429114074 25200 # Node ID 390a10b7843becd49fd7d91f685334555f1cff90 # Parent a5a95642144b7ab67e28ef0c41394a5eba7b3713 templatekw: display active bookmark more consistently (issue4552) (BC) Previously, the template keyword '{activebookmark}' would only display the active bookmark if it was also pointing to the working directory's parent. Meanwhile, the '{active}' subkeyword of the '{bookmarks}' keyword displays the active bookmark regardless of whether it also points to the working directory's parent. This is confusing. Consider the output of these two templates: $ hg log -T '{activebookmark}\n' -r indent $ hg log -T '{bookmarks % "{bookmark}"}\n' -r indent indent This is the current behavior that can arise after, eg, a pull moves a bookmark out from under you. After this patch, the first template will also return the active bookmark that points to a revision, even if it is not the current parent of the working directory. A test has been added to show the new behavior. diff -r a5a95642144b -r 390a10b7843b mercurial/templatekw.py --- a/mercurial/templatekw.py Sun May 24 18:30:27 2015 +0900 +++ b/mercurial/templatekw.py Wed Apr 15 09:07:54 2015 -0700 @@ -230,12 +230,9 @@ def showactivebookmark(**args): """:activetbookmark: String. The active bookmark, if it is associated with the changeset""" - import bookmarks as bookmarks # to avoid circular import issues - repo = args['repo'] - if bookmarks.isactivewdirparent(repo): - active = repo._activebookmark - if active in args['ctx'].bookmarks(): - return active + active = args['repo']._activebookmark + if active and active in args['ctx'].bookmarks(): + return active return '' def showdate(repo, ctx, templ, **args): diff -r a5a95642144b -r 390a10b7843b tests/test-bookmarks-current.t --- a/tests/test-bookmarks-current.t Sun May 24 18:30:27 2015 +0900 +++ b/tests/test-bookmarks-current.t Wed Apr 15 09:07:54 2015 -0700 @@ -193,3 +193,12 @@ $ hg up -q . $ test -f .hg/bookmarks.current [1] + +issue 4552 -- simulate a pull moving the active bookmark + + $ hg up -q X + $ printf "Z" > .hg/bookmarks.current + $ hg log -T '{activebookmark}\n' -r Z + Z + $ hg log -T '{bookmarks % "{active}\n"}' -r Z + Z