In the cross-device (EXDEV) case, svn_io_file_move() does a copy, not a move, on trunk:

[[[
svn_error_t *
svn_io_file_move(const char *from_path, const char *to_path,
                 apr_pool_t *pool)
{
  svn_error_t *err = svn_error_trace(svn_io_file_rename2(from_path,
                                                         to_path,
                                                         FALSE, pool));

  if (err && APR_STATUS_IS_EXDEV(err->apr_err))
    {
      svn_error_clear(err);

      /* svn_io_copy_file() performs atomic copy via temporary file. */
      err = svn_error_trace(svn_io_copy_file(from_path, to_path, TRUE,
                                             pool));
    }

  return err;
}
]]]

Looks like the "remove" part was accidentally lost in r1685793 (June 2015, after 1.9 was branched).

Anyone want to investigate further and fix?

- Julian

Reply via email to