[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Move using initial state

From: Julian Foad <julianfoad_at_btopenworld.com>
Date: Mon, 9 Sep 2013 17:29:11 +0100 (BST)

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

This is an archived mail posted to the Subversion Dev mailing list.