Hey all, 

I'd like review for:

6791858 Cadmium active list is incorrect if parent workspace contains
        no changesets

http://cr.opensolaris.org/~richlowe/onnv_6791858
http://cr.opensolaris.org/~richlowe/cadtest_6791858

The problem here is that the implicit changeset (rev -1) is not visited
when we walk changes in WS._parenttip() looking for the most recent on
our branch that is not outgoing, so in cases where that is the *only*
non-outgoing changeset (where the parent ws has no changesets), we
break.

Making this worse is that we return None in that case, which means
that when we ended up creating the changectx we return, we call
changectx(None), which will return the tip.  Leading to either an
empty active list (if the workspace has no uncommitted changes), or
one only representing the uncommitted changes.

As part of doing this, I made WS._localtip() a lot more sane
(returning just the localtip we chose, not a tuple with a committed
changeset to possibly use as a surrogate), and made the associated
changes to .active() and ._parenttip().

This also means that if we know the working copy is going to be the
localtip, we can just return it.

-- Rich

Reply via email to