Henner Zeller <h.zeller@acm.org>

Patch Suggested
r863444 r863424, r863420, r863416, r863414

r863414 | lundblad | 2007-02-04 11:31:06 +0000 (Sun, 04 Feb 2007)

When copying files, avoid an extra close/open pair of the temporary file.
This actually makes a difference when working with remote file systems.

Suggested by: Henner Zeller <h.zeller@acm.org>

* subversion/libsvn_subr/io.c
  (copy_contents): New function, mostly extracted from the old
  copy_file and enabled for all platforms.
  (svn_io_copy_file): Use the new copy_content on all platforms.
  Move opening the files and error clean-up here.

r863416 | lundblad | 2007-02-04 20:09:32 +0000 (Sun, 04 Feb 2007)

For checkout/update etc., avoid creating one working copy 'log' file per
versioned file by accumulating log entries in memory, flushing it
when closing the directory and before going into subdirectories.

For large working copies, this saves a lot of creation/reading/removing small
files, which turns out to be rather expensive, especially on remote

Suggested by: Henner Zeller <h.zeller@acm.org>

* subversion/libsvn_wc/update_editor.c
  (struct dir_baton): Add log_accum field.
  (make_dir_baton): Initialize the log_accum field.
  (flush_log): New function.
  (cleanup_dir_baton): Flush the current log before running logs.
  (open_directory, add_directory): Flush parent directory's log before
  opening the new directory.
  (close_directory): Write to the accumulated log of the dir baton instead
  of a local strinbuf.  Flush the accumulated log before running the logs.
  (close_file): Write to the accumulated log of the parent directory instead
  of creating our own log file.

r863420 | lundblad | 2007-02-05 08:19:44 +0000 (Mon, 05 Feb 2007)

Remove unnecessary file removes when installing properties.

Suggested by: Henner Zeller <h.zeller@acm.org>

* subversion/libsvn_wc/props.c
  (svn_wc__install_props): Only remove the props files if they weren't there
  before according to the entry of the path.

r863424 | lundblad | 2007-02-05 11:31:48 +0000 (Mon, 05 Feb 2007)

Avoid renaming a file twice when installing working files.
Especially on remote filesystems, rename can be a very expensive operation.

Suggested by: Henner Zeller <h.zeller@acm.org>

* subversion/libsvn_wc/log.c
  (file_xfer_under_path): When translating a file to expanded form, don't
  go via a temporary file, since svn_subst_copy_and_translate3 already
  guarantees atomicity.

r863444 | lundblad | 2007-02-08 09:13:39 +0000 (Thu, 08 Feb 2007)

Make 'svn cleanup' not fail on a missing .svn/tmp directory.  It is
removed and rebuilt anyway so failing if it does not exist is

Patch by: Henner Zeller <h.zeller@acm.org>

* subversion/include/svn_io.h
  (svn_io_remove_dir2): New function.  Add ignore_enoent flag.
  (svn_io_remove_dir): Deprecate.  All callers updated to use

* subversion/libsvn_subr/io.c
  (svn_io_remove_dir2): Copy from svn_io_remove_dir, adding ignore_enoent
  (svn_io_remove_dir): Wrap svn_io_remove_dir2.

* subversion/libsvn_wc/adm_files.c (svn_wc__adm_cleanup_tmp_area): Don't
  fail if the tmp directory doesn't exist.

* subversion/tests/cmdline/basic_tests.py
  (basic_cleanup): Add regression: missing tmp-dir in cleanup.

* subversion/tests/cmdline/svntest/actions.py
  (remove_admin_tmp_dir): New function.