[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] Implement svnadmin verify --keep-going

From: Daniel Shahaf <danielsh_at_elego.de>
Date: Thu, 20 Dec 2012 14:58:03 +0200

> Index: subversion/libsvn_repos/dump.c
> ===================================================================
> --- subversion/libsvn_repos/dump.c (revision 1420101)
> +++ subversion/libsvn_repos/dump.c (working copy)
> @@ -1413,19 +1452,31 @@
> void *cancel_edit_baton;
> svn_fs_root_t *to_root;
> apr_hash_t *props;
> + svn_error_t *err;

Pretty sure you'll get a -Wshadow compiler warning here. You should
ensure patches don't add compiler warnings.

> @@ -1433,9 +1484,20 @@
> iterpool));
>
> SVN_ERR(svn_fs_revision_root(&to_root, fs, rev, iterpool));
> - SVN_ERR(svn_repos_replay2(to_root, "", SVN_INVALID_REVNUM, FALSE,
> - cancel_editor, cancel_edit_baton,
> - NULL, NULL, iterpool));
> + err = svn_repos_replay2(to_root, "", SVN_INVALID_REVNUM, FALSE,
> + cancel_editor, cancel_edit_baton,
> + NULL, NULL, iterpool);
> +
> + if (err && keep_going)
> + {
> + notify_verification_error(rev, err, notify_func, notify_baton,
> + iterpool);
> + svn_error_clear(err);

Hmm. What if this is a malfunction error? (Compare get_shared_rep() in
fs_fs.c)

Maybe we should introduce:

#define svn_error_clear2(err) \
  do { \
    svn_error_t *__svn_error = (err); \
    if (__svn_error && SVN_ERROR_IN_CATEGORY(__svn_error->apr_err, \
                                             SVN_ERR_MALFUNC_CATEGORY_START)) \
      return svn_error_trace (__svn_error); \
    else \
      svn_error_clear(err); \
  }

(this is orthogonal to your patch)

> +++ subversion/tests/cmdline/svnadmin_tests.py (working copy)
> @@ -1835,6 +1835,107 @@
> svntest.main.run_svnadmin("recover", sbox.repo_dir)
>
>
> +def verify_keep_going(sbox):
> + "svnadmin verify --keep-going test"
> + test_create(sbox)
> + dumpfile_skeleton = open(os.path.join(os.path.dirname(sys.argv[0]),
> + 'svnadmin_tests_data',
> + 'skeleton_repos.dump')).read()

Wrap to 80 columns

>

Thanks.

Daniel
Received on 2012-12-20 13:59:09 CET

This is an archived mail posted to the Subversion Dev mailing list.