Author: danielsh
Date: Thu Dec  2 23:13:12 2010
New Revision: 1041633

URL: http://svn.apache.org/viewvc?rev=1041633&view=rev
Log:
Change the returned error code in case of an error, and use that
to prevent false errors in -DPACK_AFTER_EVERY_COMMIT-guarded code.

* subversion/libsvn_fs_fs/fs_fs.c
  (pack_body):
    Return SVN_ERR_UNSUPPORTED_FEATURE instead of SVN_ERR_FS_UNSUPPORTED_FORMAT.
    (I assume the latter means "We don't know what to do with this format 
number", 
    as opposed to "We know this format and it doesn't support <this> feature".)

* subversion/libsvn_fs/fs-loader.c
  (svn_fs_commit_txn):
    Within a PACK_AFTER_EVERY_COMMIT-guarded block, ignore "Filesystem too
    old; doesn't support packing" errors.

Modified:
    subversion/trunk/subversion/libsvn_fs/fs-loader.c
    subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c

Modified: subversion/trunk/subversion/libsvn_fs/fs-loader.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs/fs-loader.c?rev=1041633&r1=1041632&r2=1041633&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs/fs-loader.c (original)
+++ subversion/trunk/subversion/libsvn_fs/fs-loader.c Thu Dec  2 23:13:12 2010
@@ -684,7 +684,15 @@ svn_fs_commit_txn(const char **conflict_
   SVN_ERR(txn->vtable->commit(conflict_p, new_rev, txn, pool));
 
 #ifdef PACK_AFTER_EVERY_COMMIT
-  SVN_ERR(svn_fs_pack(fs_path, NULL, NULL, NULL, NULL, pool));
+  {
+    svn_error_t *err = svn_fs_pack(fs_path, NULL, NULL, NULL, NULL, pool);
+    if (err && err->apr_err == SVN_ERR_UNSUPPORTED_FEATURE)
+      /* Pre-1.6 filesystem. */
+      svn_error_clear(err);
+    else if (err)
+      /* Real error. */
+      return svn_error_return(err);
+  }
 #endif
 
   return SVN_NO_ERROR;

Modified: subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c?rev=1041633&r1=1041632&r2=1041633&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c Thu Dec  2 23:13:12 2010
@@ -7727,8 +7727,9 @@ pack_body(void *baton,
   /* If the repository isn't a new enough format, we don't support packing.
      Return a friendly error to that effect. */
   if (format < SVN_FS_FS__MIN_PACKED_FORMAT)
-    return svn_error_create(SVN_ERR_FS_UNSUPPORTED_FORMAT, NULL,
-      _("FS format too old to pack, please upgrade."));
+    return svn_error_createf(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
+      _("FSFS format (%d) too old to pack, please upgrade."),
+      format);
 
   /* If we aren't using sharding, we can't do any packing, so quit. */
   if (!max_files_per_dir)


Reply via email to