Change #5: The "report" editor doesn't exist.
Status Quo:
To perform an update:
- the client fetches a "report" editor from RA
- the client drives the report editor, describing the state
(revision numbers) of all objects in the working copy.
- RA then drives the "update" editor with custom changes.
Proposed Change:
To perform an update:
- client describes working copy state using a new vtable with
just two simplified functions: replace_dir() and
replace_file()
- RA then drives the "update" editor with custom changes.
Rationale:
It occurred to us that it's inappropriate to use an editor to
report all the revision numbers in a working copy. To do so would
completely distort the semantics of the editor: it has *nothing*
to do with describing a tree delta!
One might argue that you *could* report working copy state as a
tree-delta. In this scenario, you grab the revision of the WC's
root (say, version N), and then send a tree-delta that describes
how to change a tree at revision N into a multi-versioned tree
that looks like the working copy's hodgepodge of revisions. Every
single object in the WC that isn't at N must be reported; pretty
inefficient. Every call to replace_*() would have a base_revision
of N, and some different target revision.
Needless to say, even in this scenario, no text-deltas are being
sent, and things are inefficient. As Jimb says, "let's just write
an interface that really does what we want." :)
Received on Sat Oct 21 14:36:19 2006