Patchwork [2,of,4] templatekw: add an "obsolete" keyword

login
register
mail settings
Submitter Denis Laxalde
Date March 25, 2017, 1:09 p.m.
Message ID <c4c825f1402861e4b988.1490447357@marimba>
Download mbox | patch
Permalink /patch/19669/
State Superseded
Delegated to: Yuya Nishihara
Headers show

Comments

Denis Laxalde - March 25, 2017, 1:09 p.m.
# HG changeset patch
# User Denis Laxalde <denis@laxalde.org>
# Date 1490434451 -3600
#      Sat Mar 25 10:34:11 2017 +0100
# Node ID c4c825f1402861e4b988395ac3deebcc6b5292cf
# Parent  130358da2eb894aa04e3bb731d0ccae84205c2ba
# Available At https://bitbucket.org/dlax/hg-work
#              hg pull https://bitbucket.org/dlax/hg-work -r c4c825f14028
# EXP-Topic obsolete-ui
templatekw: add an "obsolete" keyword

This keyword is a Boolean that indicates if a changeset is obsolete.
Yuya Nishihara - March 26, 2017, 1:50 p.m.
On Sat, 25 Mar 2017 14:09:17 +0100, Denis Laxalde wrote:
> # HG changeset patch
> # User Denis Laxalde <denis@laxalde.org>
> # Date 1490434451 -3600
> #      Sat Mar 25 10:34:11 2017 +0100
> # Node ID c4c825f1402861e4b988395ac3deebcc6b5292cf
> # Parent  130358da2eb894aa04e3bb731d0ccae84205c2ba
> # Available At https://bitbucket.org/dlax/hg-work
> #              hg pull https://bitbucket.org/dlax/hg-work -r c4c825f14028
> # EXP-Topic obsolete-ui
> templatekw: add an "obsolete" keyword
> 
> This keyword is a Boolean that indicates if a changeset is obsolete.
> 
> diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
> --- a/mercurial/templatekw.py
> +++ b/mercurial/templatekw.py
> @@ -514,6 +514,12 @@ def shownode(repo, ctx, templ, **args):
>      """
>      return ctx.hex()
>  
> +@templatekeyword('obsolete')
> +def showobsolete(repo, ctx, templ, **args):
> +    """Boolean. True if this changeset is obsolete.
> +    """
> +    return ctx.obsolete()

Seems fine, but this conflicts with the string version provided by evolve.
Have we decided to switch to boolean?
Denis Laxalde - March 27, 2017, 7:52 a.m.
Yuya Nishihara a écrit :
> On Sat, 25 Mar 2017 14:09:17 +0100, Denis Laxalde wrote:
>> # HG changeset patch
>> # User Denis Laxalde <denis@laxalde.org>
>> # Date 1490434451 -3600
>> #      Sat Mar 25 10:34:11 2017 +0100
>> # Node ID c4c825f1402861e4b988395ac3deebcc6b5292cf
>> # Parent  130358da2eb894aa04e3bb731d0ccae84205c2ba
>> # Available At https://bitbucket.org/dlax/hg-work
>> #              hg pull https://bitbucket.org/dlax/hg-work -r c4c825f14028
>> # EXP-Topic obsolete-ui
>> templatekw: add an "obsolete" keyword
>>
>> This keyword is a Boolean that indicates if a changeset is obsolete.
>>
>> diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
>> --- a/mercurial/templatekw.py
>> +++ b/mercurial/templatekw.py
>> @@ -514,6 +514,12 @@ def shownode(repo, ctx, templ, **args):
>>      """
>>      return ctx.hex()
>>
>> +@templatekeyword('obsolete')
>> +def showobsolete(repo, ctx, templ, **args):
>> +    """Boolean. True if this changeset is obsolete.
>> +    """
>> +    return ctx.obsolete()
>
> Seems fine, but this conflicts with the string version provided by evolve.
> Have we decided to switch to boolean?
>

Looking at history of evolve's definition I see that there used to be
several possible string values before f4047fba5e90 but now there's only
one: 
https://bitbucket.org/marmoute/mutable-history/commits/f4047fba5e9060009aea62598416991961374243
Will there be several values again? If no, a Boolean seems natural to
me. Otherwise, I can certainly align with evolve's version.

(CC Pierre-Yves and Martin for advice)
Pierre-Yves David - March 28, 2017, 6:47 p.m.
On 03/27/2017 09:52 AM, Denis Laxalde wrote:
> Yuya Nishihara a écrit :
>> On Sat, 25 Mar 2017 14:09:17 +0100, Denis Laxalde wrote:
>>> # HG changeset patch
>>> # User Denis Laxalde <denis@laxalde.org>
>>> # Date 1490434451 -3600
>>> #      Sat Mar 25 10:34:11 2017 +0100
>>> # Node ID c4c825f1402861e4b988395ac3deebcc6b5292cf
>>> # Parent  130358da2eb894aa04e3bb731d0ccae84205c2ba
>>> # Available At https://bitbucket.org/dlax/hg-work
>>> #              hg pull https://bitbucket.org/dlax/hg-work -r
>>> c4c825f14028
>>> # EXP-Topic obsolete-ui
>>> templatekw: add an "obsolete" keyword
>>>
>>> This keyword is a Boolean that indicates if a changeset is obsolete.
>>>
>>> diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
>>> --- a/mercurial/templatekw.py
>>> +++ b/mercurial/templatekw.py
>>> @@ -514,6 +514,12 @@ def shownode(repo, ctx, templ, **args):
>>>      """
>>>      return ctx.hex()
>>>
>>> +@templatekeyword('obsolete')
>>> +def showobsolete(repo, ctx, templ, **args):
>>> +    """Boolean. True if this changeset is obsolete.
>>> +    """
>>> +    return ctx.obsolete()
>>
>> Seems fine, but this conflicts with the string version provided by
>> evolve.
>> Have we decided to switch to boolean?
>>
>
> Looking at history of evolve's definition I see that there used to be
> several possible string values before f4047fba5e90 but now there's only
> one:
> https://bitbucket.org/marmoute/mutable-history/commits/f4047fba5e9060009aea62598416991961374243
>
> Will there be several values again? If no, a Boolean seems natural to
> me. Otherwise, I can certainly align with evolve's version.

The idea behind removing some value was to simplify the UI. I think 
martin led that charge.

If I remember correctly, we picked a string because it makes the 
template usable by users directly. template user able to deal with a 
boolean should be able to deal with the conversion from string to boolean.

I hope that help.

I think that reasoning for using a string probably still hold. What do 
you think?

Cheers,
Denis Laxalde - March 28, 2017, 7:52 p.m.
Pierre-Yves David a écrit :
> On 03/27/2017 09:52 AM, Denis Laxalde wrote:
>> Yuya Nishihara a écrit :
>>> On Sat, 25 Mar 2017 14:09:17 +0100, Denis Laxalde wrote:
>>>> # HG changeset patch
>>>> # User Denis Laxalde <denis@laxalde.org>
>>>> # Date 1490434451 -3600
>>>> #      Sat Mar 25 10:34:11 2017 +0100
>>>> # Node ID c4c825f1402861e4b988395ac3deebcc6b5292cf
>>>> # Parent  130358da2eb894aa04e3bb731d0ccae84205c2ba
>>>> # Available At https://bitbucket.org/dlax/hg-work
>>>> #              hg pull https://bitbucket.org/dlax/hg-work -r
>>>> c4c825f14028
>>>> # EXP-Topic obsolete-ui
>>>> templatekw: add an "obsolete" keyword
>>>>
>>>> This keyword is a Boolean that indicates if a changeset is obsolete.
>>>>
>>>> diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
>>>> --- a/mercurial/templatekw.py
>>>> +++ b/mercurial/templatekw.py
>>>> @@ -514,6 +514,12 @@ def shownode(repo, ctx, templ, **args):
>>>>      """
>>>>      return ctx.hex()
>>>>
>>>> +@templatekeyword('obsolete')
>>>> +def showobsolete(repo, ctx, templ, **args):
>>>> +    """Boolean. True if this changeset is obsolete.
>>>> +    """
>>>> +    return ctx.obsolete()
>>>
>>> Seems fine, but this conflicts with the string version provided by
>>> evolve.
>>> Have we decided to switch to boolean?
>>>
>>
>> Looking at history of evolve's definition I see that there used to be
>> several possible string values before f4047fba5e90 but now there's only
>> one:
>> https://bitbucket.org/marmoute/mutable-history/commits/f4047fba5e9060009aea62598416991961374243
>>
>>
>> Will there be several values again? If no, a Boolean seems natural to
>> me. Otherwise, I can certainly align with evolve's version.
>
> The idea behind removing some value was to simplify the UI. I think
> martin led that charge.
>
> If I remember correctly, we picked a string because it makes the
> template usable by users directly. template user able to deal with a
> boolean should be able to deal with the conversion from string to boolean.
>
> I hope that help.
>
> I think that reasoning for using a string probably still hold. What do
> you think?

I think you're right, thanks for explaining! I will submit a new version
of the series.

Patch

diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
--- a/mercurial/templatekw.py
+++ b/mercurial/templatekw.py
@@ -514,6 +514,12 @@  def shownode(repo, ctx, templ, **args):
     """
     return ctx.hex()
 
+@templatekeyword('obsolete')
+def showobsolete(repo, ctx, templ, **args):
+    """Boolean. True if this changeset is obsolete.
+    """
+    return ctx.obsolete()
+
 @templatekeyword('p1rev')
 def showp1rev(repo, ctx, templ, **args):
     """Integer. The repository-local revision number of the changeset's
diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
--- a/tests/test-obsolete.t
+++ b/tests/test-obsolete.t
@@ -3,7 +3,7 @@ 
   > # public changeset are not obsolete
   > publish=false
   > [ui]
-  > logtemplate="{rev}:{node|short} ({phase}{if(troubles, ' {troubles}')}) [{tags} {bookmarks}] {desc|firstline}\n"
+  > logtemplate="{rev}:{node|short} ({phase}{if(obsolete, ' *obsolete*')}{if(troubles, ' {troubles}')}) [{tags} {bookmarks}] {desc|firstline}\n"
   > EOF
   $ mkcommit() {
   >    echo "$1" > "$1"
@@ -155,9 +155,9 @@  check that heads does not report them
   5:5601fb93a350 (draft) [tip ] add new_3_c
   $ hg heads --hidden
   5:5601fb93a350 (draft) [tip ] add new_3_c
-  4:ca819180edb9 (draft) [ ] add new_2_c
-  3:cdbce2fbb163 (draft) [ ] add new_c
-  2:245bde4270cd (draft) [ ] add original_c
+  4:ca819180edb9 (draft *obsolete*) [ ] add new_2_c
+  3:cdbce2fbb163 (draft *obsolete*) [ ] add new_c
+  2:245bde4270cd (draft *obsolete*) [ ] add original_c
 
 
 check that summary does not report them
@@ -392,11 +392,11 @@  clone support
   $ hg -R clone-dest log -G --hidden
   @  6:6f9641995072 (draft) [tip ] add n3w_3_c
   |
-  | x  5:5601fb93a350 (draft) [ ] add new_3_c
+  | x  5:5601fb93a350 (draft *obsolete*) [ ] add new_3_c
   |/
-  | x  4:ca819180edb9 (draft) [ ] add new_2_c
+  | x  4:ca819180edb9 (draft *obsolete*) [ ] add new_2_c
   |/
-  | x  3:cdbce2fbb163 (draft) [ ] add new_c
+  | x  3:cdbce2fbb163 (draft *obsolete*) [ ] add new_c
   |/
   | o  2:245bde4270cd (public) [ ] add original_c
   |/
@@ -475,7 +475,7 @@  detect outgoing obsolete and unstable
   $ hg debugobsolete | grep `getid original_d`
   94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
   $ hg log -r 'obsolete()'
-  4:94b33453f93b (draft) [ ] add original_d
+  4:94b33453f93b (draft *obsolete*) [ ] add original_d
   $ hg summary
   parent: 5:cda648ca50f5 tip (unstable)
    add original_e
@@ -487,7 +487,7 @@  detect outgoing obsolete and unstable
   $ hg log -G -r '::unstable()'
   @  5:cda648ca50f5 (draft unstable) [tip ] add original_e
   |
-  x  4:94b33453f93b (draft) [ ] add original_d
+  x  4:94b33453f93b (draft *obsolete*) [ ] add original_d
   |
   o  3:6f9641995072 (draft) [ ] add n3w_3_c
   |
@@ -526,7 +526,7 @@  Don't try to push extinct changeset
   1:7c3bad9141dc (public) [ ] add b
   2:245bde4270cd (public) [ ] add original_c
   3:6f9641995072 (draft) [ ] add n3w_3_c
-  4:94b33453f93b (draft) [ ] add original_d
+  4:94b33453f93b (draft *obsolete*) [ ] add original_d
   5:cda648ca50f5 (draft unstable) [tip ] add original_e
   $ hg push ../tmpf -f # -f because be push unstable too
   pushing to ../tmpf
@@ -550,7 +550,7 @@  Do not warn about new head when the new 
   $ hg log -G
   @  5:cda648ca50f5 (draft unstable) [tip ] add original_e
   |
-  x  4:94b33453f93b (draft) [ ] add original_d
+  x  4:94b33453f93b (draft *obsolete*) [ ] add original_d
   |
   o  3:6f9641995072 (draft) [ ] add n3w_3_c
   |
@@ -588,9 +588,9 @@  Reminder of the repo situation
   $ hg log --hidden --graph
   @  6:3de5eca88c00 (draft) [tip ] add obsolete_e
   |
-  | x  5:cda648ca50f5 (draft) [ ] add original_e
+  | x  5:cda648ca50f5 (draft *obsolete*) [ ] add original_e
   | |
-  | x  4:94b33453f93b (draft) [ ] add original_d
+  | x  4:94b33453f93b (draft *obsolete*) [ ] add original_d
   |/
   o  3:6f9641995072 (draft) [ ] add n3w_3_c
   |
@@ -811,6 +811,11 @@  Several troubles on the same changeset (
   summary:     add babar
   
 
+test the "obsolete" templatekw
+
+  $ hg log -r 'obsolete()'
+  6:3de5eca88c00 (draft *obsolete*) [ ] add obsolete_e
+
 test the "troubles" templatekw
 
   $ hg log -r 'bumped() and unstable()'
@@ -927,7 +932,7 @@  Test that a local tag blocks a changeset
   $ hg log -G
   @  3:323a9c3ddd91 (draft) [tip ] A
   |
-  | x  1:29f0c6921ddd (draft) [visible ] A
+  | x  1:29f0c6921ddd (draft *obsolete*) [visible ] A
   |/
   o  0:d20a80d4def3 (draft) [ ] base
   
@@ -980,9 +985,9 @@  Test bundle overlay onto hidden revision
   $ hg log -G --hidden
   @  3:b7d587542d40 (draft) [tip ] B+
   |
-  | x  2:eb95e9297e18 (draft) [ ] temporary amend commit for 44526ebb0f98
+  | x  2:eb95e9297e18 (draft *obsolete*) [ ] temporary amend commit for 44526ebb0f98
   | |
-  | x  1:44526ebb0f98 (draft) [ ] B
+  | x  1:44526ebb0f98 (draft *obsolete*) [ ] B
   |/
   o  0:4b34ecfb0d56 (draft) [ ] A
   
@@ -1122,7 +1127,7 @@  bookmarks change
   $ hg commit --amend -m "message"
   $ hg book bookb -r 13bedc178fce --hidden
   $ hg log -r 13bedc178fce
-  5:13bedc178fce (draft) [ bookb] add b
+  5:13bedc178fce (draft *obsolete*) [ bookb] add b
   $ hg book -d bookb
   $ hg log -r 13bedc178fce
   abort: hidden revision '13bedc178fce'!
@@ -1162,9 +1167,9 @@  Test ability to pull changeset with loca
   $ hg log -G --hidden
   @  4:b0551702f918 (draft) [tip ] 2
   |
-  | x  3:f27abbcc1f77 (draft) [ ] temporary amend commit for e008cf283490
+  | x  3:f27abbcc1f77 (draft *obsolete*) [ ] temporary amend commit for e008cf283490
   | |
-  | x  2:e008cf283490 (draft) [ ] 2
+  | x  2:e008cf283490 (draft *obsolete*) [ ] 2
   |/
   o  1:e016b03fd86f (draft) [ ] 1
   |