Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bisect #64

Open
GoogleCodeExporter opened this issue Mar 24, 2015 · 0 comments
Open

Bisect #64

GoogleCodeExporter opened this issue Mar 24, 2015 · 0 comments

Comments

@GoogleCodeExporter
Copy link

Feature Proposal
================

Name
----

Bisect

It shall offer a similar functionality as 
git bisect.


Purpose
-------

Provide the user with support for finding an
offending revision (usually the revision
that broke a specific functionality) within 
a specified range.

Since testing a single revion may be expensive,
TSVN needs to bisect by actual revision occurance
instead of revision intervals:

r1000
r1002 <- to find
r1010
r1034
r1500

by occurance:

r1000 -> ok
r1500 -> fail
r1010 -> fail
r1002 -> fail, first failing revision

by revision intervals

r1000 -> ok
r1500 -> fail
r1250 -> fail
r1125 -> fail
r1062 -> fail
r1031 -> fail
r1015 -> fail
r1007 -> fail
r1003 -> fail
r1001 -> ok
r1002 -> fail, first failing revision

The evaluation of a given revision may be fully
automatic by user-provided scripts or must b
done by the user.


Functional Details
------------------

The user specifies the following in a separate dialog:

* upper and lower bound of revision range
  (i.e. show context menu entry in log dialog
   when exactly two revision have been selected)
* URL to check out (default to log path)
  -> should be a history combo
* evaluation option:
    - script 
        . returns 0 for "o.k."
        . everything else is considered "failed"
        . %URL%, %WC%, %REV% parameters supported
        . should return "ok" for lower bound
        . should return "failed" for upper bound
        . command line should use a history combo
    - manual (user must select "o.k." / "failed")
        . checkbox, i.e. also available when
          a command line is specified
* cleanup option:
    - none
    - pre-update (i.e. keep status after failure)
    - post-run
  (default: pre-update)
* option to re-use working copy
  (default: enabled)
* option to skip test for upper and lower bound
  (default: check upper and lower bounds)

Using bipartitioning, a series of revisions will
be checked until the first "failing" one is found.
For every revision, the following sequence is
executed:

    * re-use w/c disabled?
        yes -> delete temp w/c, if exists

    * does temp. w/c already exist?
        yes -> . full cleanup (cleanup, revert, 
                 delete all ignored & unknown), 
                 if "pre-update" is selected
               . update to revision
        no  -> c/o revision to temp folder

    * command line specified?
        yes -> run command and remember return value
        no  -> automatically activate "manual 
               evaluation"

    * manual evaluation?
        yes -> display "o.k. / failed / cancel"
               dialog and wait for user decission
        no  -> use previous return value

    * run full cleanup, if "post-run" cleanup is enabled

    * lowest "failed" revision detected?
        yes -> stop

The progress should be shown through the progress dialog
and the cancel button should allow the user to exit at
any stage. If the script is running while "cancel" gets
pressed, TSVN shall wait for the end / user-triggered 
termination of the script.

Optionally, there may be a TSVN command line spec for 
this function.


TSVN Integration
----------------

The feature will be available in the log dialog context
menu for the revision list control.

Original issue reported on code.google.com by tortoisesvn on 6 Feb 2011 at 5:27

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant