You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Daniel Shahaf <d....@daniel.shahaf.name> on 2015/03/04 23:51:14 UTC

backport.pl - two features for committers' use

Two features of backport.pl that people may not be aware of:

1) backport.pl can automate most of the process of entering a new
nomination.

Here's an example:

[[[
% cd 1.9.x-wc
% ../trunk-wc/tools/dist/nominate.pl r1664080 "Definition should match declaration."
Index: STATUS
===================================================================
--- STATUS	(revision 1664162)
+++ STATUS	(working copy)
@@ -127,6 +127,13 @@
          strictly a regression as it is no longer possible to determine
          whether the CHECK_LOCKS flag is set on a txn.)
 
+ * r1664080
+   Add missing const to argument.
+   Justification:
+     Definition should match declaration.
+   Votes:
+     +1: danielsh
+
 Veto-blocked changes:
 =====================
 
Commit this nomination? y
Authentication realm: <https://svn.apache.org:443> ASF Committers
Password for 'danielsh': 
]]]

nominate.pl wrote the nomination and inserted it in the correct place in
the file.  It grabbed my username from ~/.subversion/auth/, the
"Justification" from argv[2] which I provided, and used the first
paragraph of the log message as the first paragraph of the entry.
I just had to type 'y' and the commit would have gone through.

(r1664080 doesn't need to be backported, so I didn't really nominate it;
that was just an example.)

2) backport.pl can be used interactively (on a committers' workstation)
to review nominations.

Example workflow:

[[[
    % cd 1.9.x-wc
    % ../trunk-wc/tools/dist/backport.pl
    
    
    >>> The r1663338 group:
    r1663338, r1663347
    
    Properly record resolving of individual property conflicts.
    
      +1: rhuijben
    
    Run a merge? [y,l,v,±1,±0,q,e,a, ,N,?] v    # Show the full entry,
                                                # including "Justification:"
						# and "Notes:".
    
     * r1663338, r1663347
       Properly record resolving of individual property conflicts.
       Justification:
         Fixes a few implementation bugs in the resolver code and exposes the
         api for more users than those that pass a callback function.
       Votes:
         +1: rhuijben
    
    Run a merge? [y,l,v,±1,±0,q,e,a, ,N,?] l    # Show log.
    <the following was displayed in my pager>
    ------------------------------------------------------------------------
    r1663338 | rhuijben | 2015-03-02 16:01:09 +0000 (Mon, 02 Mar 2015) | 10 lines
    
    Fix per property resolving of the interactive conflict resolver. Before
    this patch the same choice was in many (if not most) cases applied to
    more than one property conflict.
    ...
    ------------------------------------------------------------------------
    <at this point, I quit the pager>
    Run a merge? [y,l,v,±1,±0,q,e,a, ,N,?] y    # Run a merge, but
    Would have committed:                       # will not commit it (unless designated environment var set)
    [[[
     M      .
    M       subversion/libsvn_wc/conflicts.c
    M       subversion/tests/libsvn_wc/conflict-data-test.c
    M       subversion/tests/libsvn_wc/utils.c
    M       subversion/tests/libsvn_wc/utils.h
    M       STATUS (not shown in the diff)
    Merge the r1663338 group from trunk:
    
     * r1663338, r1663347
       Properly record resolving of individual property conflicts.
       Justification:
         Fixes a few implementation bugs in the resolver code and exposes the
         api for more users than those that pass a callback function.
       Votes:
         +1: rhuijben
    ]]]
    Shall I open a subshell? [ydN?] ?           # I typed '?' for help.
    y:   Open a shell.
    d:   View a diff.
    N:   Move to the next entry.
    ?:   Display this list.
    Shall I open a subshell? [ydN?] d           # View a diff
    <the following was displayed in my pager>
    Index: subversion/libsvn_wc/conflicts.c
    ===================================================================
    --- subversion/libsvn_wc/conflicts.c    (revision 1664176)
    +++ subversion/libsvn_wc/conflicts.c    (working copy)
    @@ -2338,7 +2338,7 @@ static svn_error_t *
     resolve_prop_conflict_on_node(svn_boolean_t *did_resolve,
    ...
    <at this point, I quit the pager>
    Shall I open a subshell? [ydN?] n
    Reverted '.'
    Reverted 'subversion/tests/libsvn_wc/utils.c'
    Reverted 'subversion/tests/libsvn_wc/conflict-data-test.c'
    Reverted 'subversion/tests/libsvn_wc/utils.h'
    Reverted 'subversion/libsvn_wc/conflicts.c'
    
    
    >>> r1663791:
    r1663791
    
    Trivial typo fix in error message.
    
      +1: brane, rhuijben
    
    Run a merge? [y,l,v,±1,±0,q,e,a, ,N,?] a    # Move to 'Approved changes'
    
    
    >>> r1663791:
    r1663791
    
    Trivial typo fix in error message.
    
      +1: brane, rhuijben
    
    Run a merge? [y,l,v,±1,±0,q,e,a, ,N,?] +1  # And enter a +1 vote
    
    
    >>> r1663991:
    r1663991
    
    Fix calculating the repository path after commits of nodes that are
    shadowing a switched (not-present) node.
    
      +1: rhuijben
    
    Run a merge? [y,l,v,±1,±0,q,e,a, ,N,?] q    # Quit.
    Index: STATUS
    ===================================================================
    --- STATUS	(revision 1664172)
    +++ STATUS	(working copy)
    @@ -22,7 +22,7 @@ Status of 1.9.0:
          Fixes a few implementation bugs in the resolver code and exposes the
          api for more users than those that pass a callback function.
        Votes:
    -     +1: rhuijben
    +     +1: rhuijben, danielsh
     
      * r1663450
        Fix removing cache tokens in the ra_svn editor implementation
    @@ -77,13 +77,6 @@ Other candidate changes:
        Votes:
          +1: rhuijben
     
    - * r1663791
    -   Trivial typo fix in error message.
    -   Justification:
    -     Fixes a typo.
    -   Votes:
    -     +1: brane, rhuijben
    -
      * r1663991
        Fix calculating the repository path after commits of nodes that are
        shadowing a switched (not-present) node.
    @@ -130,7 +123,6 @@ Other candidate changes:
     Veto-blocked changes:
     =====================
     
    -
     Approved changes:
     =================
     
    @@ -161,3 +153,11 @@ Approved changes:
          memory usage limited in a loop.
        Votes:
          +1: rhuijben, ivan, stefan2
    +
    + * r1663791
    +   Trivial typo fix in error message.
    +   Justification:
    +     Fixes a typo.
    +   Votes:
    +     +1: brane, rhuijben, danielsh
    +
    [[[
    * STATUS:
      Vote +1 on the r1663338 group.
      Vote +1 on r1663791, approving.
    ]]]
    Commit these votes? y
    Authentication realm: <https://svn.apache.org:443> ASF Committers
    Password for 'danielsh': 
]]]

The script can also show the log (by pressing 'l'), open just that entry
in $EDITOR to allow editing the Notes field or the parentheticals (by
pressing 'e'), and add entries to an ignore list so you are never
prompted for them again (useful for ignoring swig-pl -related
nominations).  For a usage summary, run it with the --help option, or
type '?' at the prompt.

Cheers,

Daniel

Re: backport.pl - two features for committers' use

Posted by Daniel Shahaf <d....@daniel.shahaf.name>.
Daniel Shahaf wrote on Wed, Mar 04, 2015 at 22:51:14 +0000:
> The script can also show the log (by pressing 'l'), open just that entry
> in $EDITOR to allow editing the Notes field or the parentheticals (by
> pressing 'e'), and add entries to an ignore list so you are never
> prompted for them again (useful for ignoring swig-pl -related
> nominations).  For a usage summary, run it with the --help option, or
> type '?' at the prompt.

It's also possible to quickly jump to a particular entry by providing
a pattern as argv[1].  For example,

% ../trunk-wc/tools/dist/backport.pl 'txn prop'

would prompt me only for nominations that have the text 'txn prop'
somewhere in their full texts (that is, Evgeny's patch).

Daniel

Re: backport.pl - two features for committers' use

Posted by Julian Foad <ju...@btopenworld.com>.
Daniel Shahaf wrote:
> Two features of backport.pl that people may not be aware of:
> 
> 1) backport.pl can automate most of the process of entering a new
> nomination.
[...]
> 2) backport.pl can be used interactively (on a committers' workstation)
> to review nominations.
[...]

Thanks for demonstrating the features. I didn't know about it. I'll try it next time I'm doing a backport.

- Julian