Frederik Ramm wrote:
> Don't know how others feel about this. The whole "changeset" and
> "rollback" complex is very high on my personal "next big thing I'll
> tackle if time allows" list but I think it is of equal complexity
> to the introduction of relations last year; it will probably
> require changes to editors and warrant a bump to API 0.6... I
> haven't made a lot of noise about this yet because I didn't want to
> say "I'm going to do it" and by saying so block anyone else who
> might get it done faster and I cannot really promise that I have it
> done by such-and-such a date. (It sure is the kind of thing that
> could be achieved if the right people sat in the same room for a
> weekend, IF a weekend can be found where they can meet...) But I'm
> theoretically willing and able to at least create a prototype that
> we can then test-drive together.
I'd strongly encourage anyone thinking of working on this to at least
have a look at how Potlatch does revert/history and undelete.
Very very roughly there are two operations:
- tell me which ways have been deleted in an area
- return a deleted way and all its constituent nodes
and a lot of code around that to cope with all the various cases of
nodes being moved/deleted/merged etc.
It's all in amf_controller.rb and I can happily talk you through the
code if it's too opaque. Moving this to be more Rails-like (it is,
together with a lot of amf_controller, currently very SQL-heavy), and
opening it up to the XML API, would go a long way to solving the
frequently-encountered "a whole area has been deleted" problem -
because if you can make it visible via the API, the script then
required to rollback an area is only about three lines long.
cheers
Richard