You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2013/01/29 11:16:44 UTC

svn commit: r1439813 - /subversion/trunk/subversion/libsvn_wc/wc_db.c

Author: rhuijben
Date: Tue Jan 29 10:16:44 2013
New Revision: 1439813

URL: http://svn.apache.org/viewvc?rev=1439813&view=rev
Log:
Since working copy upgrades from 1.7 to 1.8 are now explicit, instead of
implicit some wc_db apis can now return a working copy upgrade required error.

Make sure the working copy upgrade code doesn't interpret an error from
the sqlite upgrade code as a trigger to try upgrading from entries.


* subversion/libsvn_wc/wc_db.c
  (svn_wc__db_bump_format): Wrap SVN_ERR_WC_UPGRADE_REQUIRED errors from
    the sqlite upgrade code, to avoid falling in the entries code inside
    svn_wc_upgrade.

Modified:
    subversion/trunk/subversion/libsvn_wc/wc_db.c

Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1439813&r1=1439812&r2=1439813&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Tue Jan 29 10:16:44 2013
@@ -14239,7 +14239,6 @@ svn_wc__db_bump_format(int *result_forma
 {
   svn_sqlite__db_t *sdb;
   svn_error_t *err;
-  svn_error_t *upgrade_err;
   int format;
 
   /* Do not scan upwards for a working copy root here to prevent accidental
@@ -14275,11 +14274,18 @@ svn_wc__db_bump_format(int *result_forma
     }
 
   SVN_ERR(svn_sqlite__read_schema_version(&format, sdb, scratch_pool));
-  upgrade_err = svn_wc__upgrade_sdb(result_format, wcroot_abspath,
+  err = svn_wc__upgrade_sdb(result_format, wcroot_abspath,
                                      sdb, format, scratch_pool);
-  err = svn_sqlite__close(sdb);
 
-  return svn_error_compose_create(upgrade_err, err);
+  /* Make sure we return a different error than expected for upgrades from
+     entries */
+  if (err && err->apr_err == SVN_ERR_WC_UPGRADE_REQUIRED)
+    err = svn_error_create(SVN_ERR_WC_UNSUPPORTED_FORMAT, err,
+                           _("Working copy upgrade failed"));
+
+  err = svn_error_compose_create(err, svn_sqlite__close(sdb));
+
+  return svn_error_trace(err);
 }
 
 svn_error_t *