Author: stefan2
Date: Mon May 16 14:28:45 2011
New Revision: 1103749
URL: http://svn.apache.org/viewvc?rev=1103749&view=rev
Log:
SVN status will try to read the .format file for every folder in
the working copy. That is very expensive, so do a stat call
to check whether the .format file exists - which it won't for
wc-ng w/cs.
* subversion/libsvn_wc/wc_db_wcroot.c
(get_old_version): early exit upon failed stat
Modified:
subversion/trunk/subversion/libsvn_wc/wc_db_wcroot.c
Modified: subversion/trunk/subversion/libsvn_wc/wc_db_wcroot.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db_wcroot.c?rev=1103749&r1=1103748&r2=1103749&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db_wcroot.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db_wcroot.c Mon May 16 14:28:45
2011
@@ -50,10 +50,21 @@ get_old_version(int *version,
{
svn_error_t *err;
const char *format_file_path;
+ svn_node_kind_t kind;
/* Try reading the format number from the entries file. */
format_file_path = svn_wc__adm_child(abspath, SVN_WC__ADM_ENTRIES,
scratch_pool);
+
+ /* Since trying to open a non-existent file is quite expensive, try a
+ quick stat call first. In wc-ng w/cs, this will be an early exit. */
+ SVN_ERR(svn_io_check_path(format_file_path, &kind, scratch_pool));
+ if (kind == svn_node_none)
+ {
+ *version = 0;
+ return SVN_NO_ERROR;
+ }
+
err = svn_io_read_version_file(version, format_file_path, scratch_pool);
if (err == NULL)
return SVN_NO_ERROR;