Comment 12 for bug 152008

Revision history for this message
Christopher Armstrong (radix) wrote :

I came across an interesting feature of monotone, and I think it may be the kind of operation that I would like:

"mtn disapprove"

"""
This command records a disapproval of the changes between id's ancestor and id. It does this by committing the inverse changes as a new revision descending from id. The new revision will show up as a new head and thus a subsequent merge will incorporate the inverse of the disapproved changes in the other head(s).

Conceptually, disapproves contract is that disapprove(A) gives a revision B such that whenever B is merged with a descendant D of A the merge will result in what D “would have looked like” if A had never happened.

Note that as a consequence of this contract the disapprove command only works if id has exactly one ancestor, since it hasn't been worked out how to generate such a descendant in the multi-ancestor case.
"""

From http://monotone.ca/docs/Tree.html

I can't tell for sure, but it looks like this is the kind of operation that I need in bzr. I don't know monotone's model, but it may be interesting to look at how they implement it.