App-SVN-Bisect

 view release on metacpan or  search on metacpan

bin/svn-bisect  view on Meta::CPAN


The normal caveats apply.  In particular, if your script makes any
changes, don't forget to clean up afterwards.

=head2 reset

    svn-bisect reset

Clean up after a bisect, and return the repository to the revision it was at
before you started.

=head2 help

    svn-bisect help
    svn-bisect help start

Gives you some useful descriptions and usage information.


=head1 EXAMPLE

...Because, you know, no software documentation is complete without a flashy
screenshot, these days.

So, lets say you were wondering when the subversion project added the
"Last Changed Rev:" line to the output of "svn info".  Determining the
existence of this change is a straightforward matter of searching for the
text string... if a result was found, the current revision is "after",
otherwise it was "before".  So a bisect looks like this:

    $ svn co http://svn.apache.org/repos/asf/subversion/trunk/subversion
    [snip lots of subversion checkout spam]
    Checked out revision 980012.
    
    $ cd subversion
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    svn/info-cmd.c:362:    SVN_ERR(svn_cmdline_printf(pool, _("Last Changed Rev: %ld\n"),
    tests/cmdline/depth_tests.py:2056:      'Last Changed Rev'   : '^1$',
    tests/cmdline/upgrade_tests.py:387:      'Last Changed Rev' : '7'
    tests/cmdline/upgrade_tests.py:396:      'Last Changed Rev' : '10'
    
    $ date
    Wed Jul 28 06:40:03 EDT 2010
    
    $ svn-bisect --min 0 start
    $ svn-bisect after
    Fetching history from r0 to r980012; it may take a while.
    There are 24349 revs left in the pool.  Choosing r862045.
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    svn/info-cmd.c:348:    SVN_ERR(svn_cmdline_printf(pool, _("Last Changed Rev: %ld\n"),
    
    $ svn-bisect after
    There are 12174 revs left in the pool.  Choosing r845633.
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    clients/cmdline/info-cmd.c:153:    printf ("Last Changed Rev: %" SVN_REVNUM_T_FMT "\n", entry->cmt_rev);
    
    $ svn-bisect after
    There are 6087 revs left in the pool.  Choosing r840416.
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    
    $ svn-bisect before
    There are 3043 revs left in the pool.  Choosing r842636.
    
    # ack --nocolor --nogroup 'Last Changed Rev'
    clients/cmdline/info-cmd.c:153:    printf ("Last Changed Rev: %" SVN_REVNUM_T_FMT "\n", entry->cmt_rev);
    
    $ svn-bisect after
    There are 1521 revs left in the pool.  Choosing r841463.
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    
    $ svn-bisect before
    There are 760 revs left in the pool.  Choosing r841993.
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    clients/cmdline/info-cmd.c:161:        printf ("Last Changed Rev: %" SVN_REVNUM_T_FMT "\n", entry->cmt_rev);
    
    $ svn-bisect after
    There are 380 revs left in the pool.  Choosing r841730.
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    
    $ svn-bisect before
    There are 189 revs left in the pool.  Choosing r841860.
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    
    $ svn-bisect before
    There are 94 revs left in the pool.  Choosing r841933.
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    clients/cmdline/info-cmd.c:151:        printf ("Last Changed Rev: %" SVN_REVNUM_T_FMT "\n", entry->cmt_rev);
    
    $ svn-bisect after
    There are 47 revs left in the pool.  Choosing r841904.
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    clients/cmdline/info-cmd.c:150:        printf ("Last Changed Rev: %ld\n", entry->cmt_rev);
    
    $ svn-bisect after
    There are 23 revs left in the pool.  Choosing r841880.
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    
    $ svn-bisect before
    There are 11 revs left in the pool.  Choosing r841890.
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    clients/cmdline/info-cmd.c:153:            printf ("Last Changed Rev: %ld\n", entry->cmt_rev);
    
    $ svn-bisect after
    There are 5 revs left in the pool.  Choosing r841883.
    
    $ ack --nocolor --nogroup 'Last Changed Rev'
    clients/cmdline/info-cmd.c:153:            printf ("Last Changed Rev: %ld\n", entry->cmt_rev);
    
    $ svn-bisect after



( run in 1.914 second using v1.01-cache-2.11-cpan-788537b7465 )