
Directory copies -- How They Work


What happens now, when you type "svn cp dir1 dir2":

  * dir1 is copied recursively via APR IO routines (equivalent to a
    unix 'cp -R dir1 dir2')

  * dir2 is scheduled for addition in both parent and its own
   'this_dir' entry, ** with copyfrom args **.

  * dir2's ancestor URL is rewritten, as is the ancestor URL of
    *every* child.  (recursively).  We do this because it's the normal
    expected behavior; whenever we schedule anything for addition, the
    new entry receives a "predicted" URL that doesn't really exist
    yet.

  * during commit, the commit-crawler correctly sends copyfrom args to
    editor, and svn_fs_copy is called, and then crawler recurses *not*
    in funky 'adds-only' mode (so it can still detect local mods)

  * after commit succeeds, any directory "target" that was added with
    history has ALL of its children recursively revision-bumped.


What still needs to happen:

  * crawler: if existence==copied, report differing revisions!
    (compare entry->rev against parent_stackframe->entry->rev.)    

  * post-commit: how to deal with deletes within a copied directory?
   
      svn_wc_set_revision is told to do a recursive bump.
      it calls log_do_committed, which is supposed to recognize a
      "schedule delete", no?  and remove it from version control?

