Philip Martin wrote:
> The current Ev2 has atomic add for files and directories, it doesn't
> attempt to reuse the alter operations by adding "empty" nodes and then
> altering those empty nodes. The current Ev2 also has move and copy
> operations that do attempt to resuse alter. I'm not clear why they are
> different. Why is add different from move/copy?
I agree there's incomplete separation of concerns in these aspects of the API. I don't know whether that's a problem.
> We could split move in two and make the parts more like delete and
> add. We could also make copy more like add:
>
> add_file(path, properties, content, replaces_rev)
> add_dir(path, properties, children, replaces_rev)
> alter_file(path, properties, content, replaces_rev)
> alter_dir(path, properties, children, replaces_rev)
> delete(path, revision)
> move_away(src_path, dst_path, revision)
> move_here_file(src_path, dst_path, properties, content, replaces_rev)
> move_here_dir(src_path, dst_path, properties, children, replaces_rev)
> copy_file(src_path, src_rev, dst_path, properties, content, replaces_rev)
> copy_dir(src_path, src_rev, dst_path, properties, children, replaces_rev)
Yup. Alternatively, we could make 'alter' the *only* way to declare a node's content:
add_file(path) # new empty file
add_dir(path) # new empty dir
copy(src_path, dst_path)
move(...)
alter_file(path, properties, content, replaces_rev)
alter_dir(path, properties, children, replaces_rev)
Or with just a single add_ function:
add_node(path) # declare new node; its kind to be set by alter_*.
copy(src_path, dst_path)
move(...)
alter_file(path, properties, content, replaces_rev)
alter_dir(path, properties, children, replaces_rev)
- Julian
Received on 2013-09-09 18:30:13 CEST