Evolve for Mercurial (starting to show up in core mercurial) is trying to cleanly solve this.
It provides (safe) mutable history for local changes (the VCS tracks what is safe and what isn't), and a way to still be able to collaborate on changes without "surprising" the people who pull from you.
The vision was to have phase as the foundation for evolve.
We had some discussions as far back as mid-2010, at the time the feature was called LiquidHg. The first step was phase (differentiate between changeset states), and now it's evolve (make it flow).
Meanwhile I have had to use git for years to get around this lack in mercurial. I can't see what incentive I will have to switch to mercurial's tool when it is fully cooked.
This feature looks nice. I imagine its a bear to safely do :)
I always wished that darcs was usable "in the real world", as the concept of composability is very appealing. Perhaps there is a compromise to be reached here (local patchs with key sequence points?)
I think it looks like a trap, frankly. Give me a good definition for "local". If I mail a patch to someone and they apply it to their tree, what breaks and for whom if one of us then "publishes" it?
I'm sure there's an answer to that question, but I'm equally certain it's not the only question. It's not that git solves all this stuff perfectly, or that it does it in the best way possible, it's that lots of problems in SCM are human communication issues that simply cannot be solved by software. One of git's virtues is that it knows its own limitations.
I was referring to Python doctests (documentation narrative with interspersed Python statements and embedded reference output).
The text looked to me like one could extract all the commands, run them and check their output against the embedded reference output automatically. I don't know, it had such a rigid structure.
On a second look, the output contains timestamps, so what looks like shell output is probably only shell output the author has copied once into their text.
It provides (safe) mutable history for local changes (the VCS tracks what is safe and what isn't), and a way to still be able to collaborate on changes without "surprising" the people who pull from you.
E.g.: http://draketo.de/light/english/mercurial/hg-evolve-2013-01-...