Indeed!Ross Boyd wrote: Absolutely the worst scenario is not having the ability to retreat completely when a promising idea turns out bad.... and that happens very frequently.
How do you handle the case where you are working on a particular change (implementing/testing a new idea) which might take months and at the same time you want to try something different (starting from your tested stable version)?
For instance this is what has happened to me:
1) Modify the evaluation algorithm leads to several possibilities that are mutually exclusive.
1.1) Evaluation modification One
1.2) Evaluation modification Two
1.3) Evaluation modification Three
1.n) Evaluation modification ...
2) Modify the search ("Alpha-Beta", Negascout, something else)
3) Modify the transposition table handling
3.1) Position aging
3.2) Refutation table
I cannot easily reject some of the changes since it takes a long time to determine their effect, but at the same time I don't like to be stuck on a single issue when there are other venues to explore. At some point, obviously, you have to move on and stop working on a given set of changes (branch) even though you might not have conclusive results, but it is still nice to have the steps that were taken on the branch available for evaluation (merge) at some later point.