optional ability to set last-commit timestamps on working files. This
ability is turned off by default, and be activated by a new runtime
config variable: "[miscellany] --> use-commit-times = yes". These
four commands either all use current timestamps, or all use commit
timestamps.
'svn export' already sets last-commit timestampss, so the rest of this
issue is simply waiting for a new apache (apr) release; at that point,
we simply uncomment the code in svn_io_set_file_affected_time(), and
poof, the issue is done.
* libsvn_wc/update_editor.c
(struct edit_baton): new 'use_commit_times' boolean field.
(make_editor): take 'use_commit_times' argument.
(svn_wc_get_switch_editor): take 'use_commit_times' arg.
(svn_wc_get_update_editor): take 'use_commit_times' arg.
(struct file_baton): new 'last_changed_date' field.
(change_file_prop): if use_commit_times, cache file's last-changed-date.
(install_file): take new 'timestamp_string' argument, and if
non-NULL, write a log command to set timestamp on final working file.
(close_file): pass fb->last_changed_date into install_file().
(svn_wc_add_repos_file): pass NULL into install_file().
* include/svn_wc.h
(svn_wc_get_update_editor, svn_wc_get_switch_editor, svn_wc_revert):
take new 'use_commit_times' arg.
* libsvn_wc/log.h
(SVN_WC__LOG_SET_TIMESTAMP): new log command.
(SVN_WC__LOG_ATTR_TIMESTAMP): new log attribute.
* libsvn_wc/log.c
(log_do_file_readonly): unrelated cleanup -- remove unused args!
(start_handler): dispatch SET_TIMESTAMP and READONLY commands correctly.
(log_do_file_timestamp): new function which sets timestamp.
* include/svn_config.h
(SVN_CONFIG_OPTION_USE_COMMIT_TIMES): new run-time config variable
in [miscellany] section of config file.
* libsvn_subr/config_file.c
(svn_config_ensure): document new variable in default config file.
* libsvn_client/switch.c
(svn_client_switch): look for new config variable, pass into
svn_wc_get_switch_editor().
* libsvn_client/update.c
(svn_client__update_internal): look for new config variable, pass
into svn_wc_get_update_editor().
* libsvn_wc/adm_ops.c
(svn_wc_revert): new 'use_commit_times' arg, pass to revert_admin_things().
(revert_admin_things): new 'use_commit_times' arg -- use it to set
timestamp on a working file that is copied back out from text-base.
* libsvn_client/revert.c
(svn_client_revert): look for new config variable, pass to svn_wc_revert().
* doc/book/TODO: note need to doc new variable.