You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pr...@apache.org on 2013/04/08 13:47:04 UTC
svn commit: r1465596 [1/5] - in /subversion/branches/verify-keep-going: ./
contrib/server-side/svncutter/ subversion/bindings/cxxhl/include/
subversion/bindings/cxxhl/include/svncxxhl/ subversion/bindings/cxxhl/src/
subversion/bindings/cxxhl/tests/ sub...
Author: prabhugs
Date: Mon Apr 8 11:47:02 2013
New Revision: 1465596
URL: http://svn.apache.org/r1465596
Log:
Merging r1457676 through r1465586 from trunk into verify-keep-going branch.
Added:
subversion/branches/verify-keep-going/subversion/include/private/svn_ra_svn_private.h
- copied unchanged from r1465586, subversion/trunk/subversion/include/private/svn_ra_svn_private.h
subversion/branches/verify-keep-going/subversion/tests/cmdline/legacy/
- copied from r1465586, subversion/trunk/subversion/tests/cmdline/legacy/
subversion/branches/verify-keep-going/subversion/tests/cmdline/legacy/utf8_tests.py
- copied unchanged from r1465586, subversion/trunk/subversion/tests/cmdline/legacy/utf8_tests.py
subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/error-code-test.c
- copied unchanged from r1465586, subversion/trunk/subversion/tests/libsvn_subr/error-code-test.c
subversion/branches/verify-keep-going/tools/hook-scripts/control-chars.py
- copied unchanged from r1465586, subversion/trunk/tools/hook-scripts/control-chars.py
Modified:
subversion/branches/verify-keep-going/ (props changed)
subversion/branches/verify-keep-going/build.conf
subversion/branches/verify-keep-going/contrib/server-side/svncutter/svncutter
subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl.hpp (props changed)
subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/_compat.hpp (props changed)
subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp (props changed)
subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/tristate.hpp (props changed)
subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/exception.cpp (props changed)
subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/tristate.cpp (props changed)
subversion/branches/verify-keep-going/subversion/bindings/cxxhl/tests/test_exception.cpp (props changed)
subversion/branches/verify-keep-going/subversion/bindings/javahl/native/DiffOptions.cpp (props changed)
subversion/branches/verify-keep-going/subversion/bindings/javahl/native/DiffOptions.h (props changed)
subversion/branches/verify-keep-going/subversion/bindings/javahl/native/ReposFreezeAction.cpp (props changed)
subversion/branches/verify-keep-going/subversion/bindings/javahl/native/ReposFreezeAction.h (props changed)
subversion/branches/verify-keep-going/subversion/bindings/javahl/native/VersionExtended.cpp (props changed)
subversion/branches/verify-keep-going/subversion/bindings/javahl/native/VersionExtended.h (props changed)
subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.cpp (props changed)
subversion/branches/verify-keep-going/subversion/bindings/swig/core.i
subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_containers.swg
subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_types.swg
subversion/branches/verify-keep-going/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
subversion/branches/verify-keep-going/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
subversion/branches/verify-keep-going/subversion/bindings/swig/python/tests/checksum.py (props changed)
subversion/branches/verify-keep-going/subversion/bindings/swig/python/tests/client.py
subversion/branches/verify-keep-going/subversion/bindings/swig/python/tests/repository.py
subversion/branches/verify-keep-going/subversion/include/svn_auth.h
subversion/branches/verify-keep-going/subversion/include/svn_error.h
subversion/branches/verify-keep-going/subversion/include/svn_error_codes.h
subversion/branches/verify-keep-going/subversion/include/svn_fs.h
subversion/branches/verify-keep-going/subversion/include/svn_ra.h
subversion/branches/verify-keep-going/subversion/include/svn_ra_svn.h
subversion/branches/verify-keep-going/subversion/include/svn_repos.h
subversion/branches/verify-keep-going/subversion/libsvn_client/copy_foreign.c
subversion/branches/verify-keep-going/subversion/libsvn_client/delete.c
subversion/branches/verify-keep-going/subversion/libsvn_client/export.c
subversion/branches/verify-keep-going/subversion/libsvn_client/merge.c
subversion/branches/verify-keep-going/subversion/libsvn_client/revert.c
subversion/branches/verify-keep-going/subversion/libsvn_client/switch.c
subversion/branches/verify-keep-going/subversion/libsvn_client/update.c
subversion/branches/verify-keep-going/subversion/libsvn_delta/path_driver.c
subversion/branches/verify-keep-going/subversion/libsvn_fs/fs-loader.c
subversion/branches/verify-keep-going/subversion/libsvn_fs/fs-loader.h
subversion/branches/verify-keep-going/subversion/libsvn_fs_base/fs.c
subversion/branches/verify-keep-going/subversion/libsvn_fs_base/tree.c
subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs.c
subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs_fs.c
subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/tree.h
subversion/branches/verify-keep-going/subversion/libsvn_ra/deprecated.c
subversion/branches/verify-keep-going/subversion/libsvn_ra/deprecated.h (props changed)
subversion/branches/verify-keep-going/subversion/libsvn_ra/ra_loader.c
subversion/branches/verify-keep-going/subversion/libsvn_ra/ra_loader.h
subversion/branches/verify-keep-going/subversion/libsvn_ra/wrapper_template.h
subversion/branches/verify-keep-going/subversion/libsvn_ra_local/ra_plugin.c
subversion/branches/verify-keep-going/subversion/libsvn_ra_local/split_url.c
subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/ra_serf.h
subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/sb_bucket.c
subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/update.c
subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/util.c
subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/client.c
subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/editorp.c
subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/marshal.c
subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/protocol
subversion/branches/verify-keep-going/subversion/libsvn_repos/commit.c
subversion/branches/verify-keep-going/subversion/libsvn_repos/dump.c
subversion/branches/verify-keep-going/subversion/libsvn_repos/fs-wrap.c
subversion/branches/verify-keep-going/subversion/libsvn_repos/hooks.c
subversion/branches/verify-keep-going/subversion/libsvn_repos/load-fs-vtable.c
subversion/branches/verify-keep-going/subversion/libsvn_repos/repos.c
subversion/branches/verify-keep-going/subversion/libsvn_repos/repos.h
subversion/branches/verify-keep-going/subversion/libsvn_subr/auth.c
subversion/branches/verify-keep-going/subversion/libsvn_subr/auth.h
subversion/branches/verify-keep-going/subversion/libsvn_subr/config.c
subversion/branches/verify-keep-going/subversion/libsvn_subr/config_win.c
subversion/branches/verify-keep-going/subversion/libsvn_subr/error.c
subversion/branches/verify-keep-going/subversion/libsvn_subr/simple_providers.c
subversion/branches/verify-keep-going/subversion/libsvn_wc/diff.h (contents, props changed)
subversion/branches/verify-keep-going/subversion/mod_dav_svn/liveprops.c
subversion/branches/verify-keep-going/subversion/mod_dav_svn/lock.c
subversion/branches/verify-keep-going/subversion/mod_dav_svn/merge.c
subversion/branches/verify-keep-going/subversion/mod_dav_svn/mod_dav_svn.c
subversion/branches/verify-keep-going/subversion/mod_dav_svn/repos.c
subversion/branches/verify-keep-going/subversion/mod_dav_svn/util.c
subversion/branches/verify-keep-going/subversion/svn/cl-conflicts.c
subversion/branches/verify-keep-going/subversion/svn/client_errors.h
subversion/branches/verify-keep-going/subversion/svn/file-merge.c
subversion/branches/verify-keep-going/subversion/svn/svn.c
subversion/branches/verify-keep-going/subversion/svnadmin/svnadmin.c
subversion/branches/verify-keep-going/subversion/svnrdump/svnrdump.c
subversion/branches/verify-keep-going/subversion/svnserve/serve.c
subversion/branches/verify-keep-going/subversion/tests/cmdline/authz_tests.py
subversion/branches/verify-keep-going/subversion/tests/cmdline/merge_automatic_tests.py
subversion/branches/verify-keep-going/subversion/tests/cmdline/merge_reintegrate_tests.py
subversion/branches/verify-keep-going/subversion/tests/cmdline/svntest/main.py
subversion/branches/verify-keep-going/subversion/tests/libsvn_fs/fs-test.c
subversion/branches/verify-keep-going/subversion/tests/libsvn_repos/repos-test.c
subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/ (props changed)
subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/auth-test.c
subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/error-test.c
subversion/branches/verify-keep-going/subversion/tests/svn_test_main.c
subversion/branches/verify-keep-going/tools/client-side/svn-bench/client_errors.h
subversion/branches/verify-keep-going/tools/client-side/svn-bench/null-export-cmd.c
subversion/branches/verify-keep-going/tools/dist/make-deps-tarball.sh (props changed)
subversion/branches/verify-keep-going/tools/dist/release.py
subversion/branches/verify-keep-going/win-tests.py
Propchange: subversion/branches/verify-keep-going/
------------------------------------------------------------------------------
Merged /subversion/branches/verify-at-commit:r1462039-1462408
Merged /subversion/trunk:r1457676-1465586
Modified: subversion/branches/verify-keep-going/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/build.conf?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/build.conf (original)
+++ subversion/branches/verify-keep-going/build.conf Mon Apr 8 11:47:02 2013
@@ -808,6 +808,14 @@ sources = error-test.c
install = test
libs = libsvn_test libsvn_subr apriconv apr
+[error-code-test]
+description = Test error library
+type = exe
+path = subversion/tests/libsvn_subr
+sources = error-code-test.c
+install = test
+libs = libsvn_test libsvn_subr apriconv apr
+
[hashdump-test]
description = Test hashfile format for props
type = exe
@@ -1213,7 +1221,7 @@ libs = __ALL__
strings-reps-test changes-test locks-test repos-test
checksum-test compat-test config-test hashdump-test mergeinfo-test
opt-test path-test stream-test string-test time-test utf-test
- error-test cache-test spillbuf-test crypto-test
+ error-test error-code-test cache-test spillbuf-test crypto-test
named_atomic-test named_atomic-proc-test revision-test
subst_translate-test io-test
translate-test
Modified: subversion/branches/verify-keep-going/contrib/server-side/svncutter/svncutter
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/contrib/server-side/svncutter/svncutter?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/contrib/server-side/svncutter/svncutter (original)
+++ subversion/branches/verify-keep-going/contrib/server-side/svncutter/svncutter Mon Apr 8 11:47:02 2013
@@ -706,7 +706,7 @@ def log(source, selection):
date = props["svn:date"].split(".")[0]
date = time.strptime(date, "%Y-%m-%dT%H:%M:%S")
date = time.strftime("%Y-%m-%d %H:%M:%S +0000 (%a, %d %b %Y)", date)
- print "r%s | %s | %s | %d lines" % (self.revision,
+ print "r%s | %s | %s | %d lines" % (source.revision,
author,
date,
logentry.count(os.linesep))
Propchange: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl.hpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/_compat.hpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/tristate.hpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/exception.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/tristate.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/tests/test_exception.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/DiffOptions.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/DiffOptions.h
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/ReposFreezeAction.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/ReposFreezeAction.h
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/VersionExtended.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/VersionExtended.h
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/core.i
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/core.i?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/core.i (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/core.i Mon Apr 8 11:47:02 2013
@@ -705,6 +705,15 @@ svn_swig_pl_set_current_pool (apr_pool_t
%authprompt_callback_typemap(ssl_client_cert_pw)
%authprompt_callback_typemap(gnome_keyring_unlock)
+#ifdef SWIGPYTHON
+/* pl and rb aren't yet implemented */
+%callback_typemap_maybenull(svn_auth_cleanup_func_t cleanup_func,
+ void *cleanup_baton,
+ svn_swig_py_auth_cleanup_func,
+ svn_swig_pl_auth_cleanup_func,
+ svn_swig_rb_auth_cleanup_func)
+#endif
+
/* -----------------------------------------------------------------------
* For all the various functions that set a callback baton create a reference
* for the baton (which in this case is an SV pointing to the callback)
Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_containers.swg
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_containers.swg?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_containers.swg (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_containers.swg Mon Apr 8 11:47:02 2013
@@ -421,6 +421,19 @@
*/
/* -----------------------------------------------------------------------
+ Output of apr_array_header_t * <svn_prop_inherited_item_t *>
+*/
+#ifdef SWIGPYTHON
+%typemap(argout) apr_array_header_t **OUTPUT_OF_PROP_INHERITED_ITEM {
+ %append_output(svn_swig_py_propinheriteditemarray_to_dict(*$1));
+}
+
+%apply apr_array_header_t **OUTPUT_OF_PROP_INHERITED_ITEM {
+ apr_array_header_t **inherited_props
+};
+#endif
+
+/* -----------------------------------------------------------------------
Output of apr_array_header_t * <svn_prop_t *>
*/
#ifdef SWIGRUBY
Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_types.swg
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_types.swg?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_types.swg (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_types.swg Mon Apr 8 11:47:02 2013
@@ -906,6 +906,28 @@ svn_ ## TYPE ## _swig_rb_closed(VALUE se
#endif
/* -----------------------------------------------------------------------
+ Callback: svn_repos_freeze_func_t
+*/
+#ifdef SWIGPYTHON
+%typemap(in) (svn_repos_freeze_func_t freeze_body, void *baton)
+{
+ $1 = svn_swig_py_repos_freeze_func;
+ $2 = (void *)$input;
+}
+#endif
+
+/* -----------------------------------------------------------------------
+ Callback: svn_proplist_receiver2_t
+*/
+#ifdef SWIGPYTHON
+%typemap(in) (svn_proplist_receiver2_t receiver, void *receiver_baton)
+{
+ $1 = svn_swig_py_proplist_receiver2;
+ $2 = (void *)$input;
+}
+#endif
+
+/* -----------------------------------------------------------------------
Callback: svn_fs_warning_callback_t
*/
Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Mon Apr 8 11:47:02 2013
@@ -548,6 +548,19 @@ static PyObject *convert_svn_string_t(vo
return PyString_FromStringAndSize((void *)s->data, s->len);
}
+/* Convert a C string into a Python String object (or a reference to
+ Py_None if CSTRING is NULL). */
+static PyObject *cstring_to_pystring(const char *cstring)
+{
+ if (! cstring)
+ {
+ PyObject *retval = Py_None;
+ Py_INCREF(Py_None);
+ return retval;
+ }
+ return PyString_FromString(cstring);
+}
+
static PyObject *convert_svn_client_commit_item3_t(void *value, void *ctx)
{
PyObject *list;
@@ -559,30 +572,9 @@ static PyObject *convert_svn_client_comm
list = PyList_New(9);
- if (item->path)
- path = PyString_FromString(item->path);
- else
- {
- path = Py_None;
- Py_INCREF(Py_None);
- }
-
- if (item->url)
- url = PyString_FromString(item->url);
- else
- {
- url = Py_None;
- Py_INCREF(Py_None);
- }
-
- if (item->copyfrom_url)
- cf_url = PyString_FromString(item->copyfrom_url);
- else
- {
- cf_url = Py_None;
- Py_INCREF(Py_None);
- }
-
+ path = cstring_to_pystring(item->path);
+ url = cstring_to_pystring(item->url);
+ cf_url = cstring_to_pystring(item->copyfrom_url);
kind = PyInt_FromLong(item->kind);
rev = PyInt_FromLong(item->revision);
cf_rev = PyInt_FromLong(item->copyfrom_rev);
@@ -709,6 +701,51 @@ PyObject *svn_swig_py_mergeinfo_catalog_
return convert_hash(hash, convert_mergeinfo_hash, type, py_pool);
}
+PyObject *
+svn_swig_py_propinheriteditemarray_to_dict(const apr_array_header_t *array)
+{
+ PyObject *dict = PyDict_New();
+ int i;
+
+ if (dict == NULL)
+ return NULL;
+
+ for (i = 0; i < array->nelts; ++i)
+ {
+ svn_prop_inherited_item_t *prop_inherited_item
+ = APR_ARRAY_IDX(array, i, svn_prop_inherited_item_t *);
+ apr_hash_t *prop_hash = prop_inherited_item->prop_hash;
+ PyObject *py_key, *py_value;
+
+ py_key = PyString_FromString(prop_inherited_item->path_or_url);
+ if (py_key == NULL)
+ goto error;
+
+ py_value = svn_swig_py_prophash_to_dict(prop_hash);
+ if (py_value == NULL)
+ {
+ Py_DECREF(py_key);
+ goto error;
+ }
+
+ if (PyDict_SetItem(dict, py_key, py_value) == -1)
+ {
+ Py_DECREF(py_value);
+ Py_DECREF(py_key);
+ goto error;
+ }
+
+ Py_DECREF(py_value);
+ Py_DECREF(py_key);
+ }
+
+ return dict;
+
+ error:
+ Py_DECREF(dict);
+ return NULL;
+}
+
PyObject *svn_swig_py_proparray_to_dict(const apr_array_header_t *array)
{
PyObject *dict = PyDict_New();
@@ -744,7 +781,15 @@ PyObject *svn_swig_py_proparray_to_dict(
}
}
- PyDict_SetItem(dict, py_key, py_value);
+ if (PyDict_SetItem(dict, py_key, py_value) == -1)
+ {
+ Py_DECREF(py_key);
+ Py_DECREF(py_value);
+ goto error;
+ }
+
+ Py_DECREF(py_key);
+ Py_DECREF(py_value);
}
return dict;
@@ -787,6 +832,7 @@ PyObject *svn_swig_py_locationhash_to_di
}
if (PyDict_SetItem(dict, key, value) == -1)
{
+ Py_DECREF(key);
Py_DECREF(value);
Py_DECREF(dict);
return NULL;
@@ -846,7 +892,11 @@ PyObject *svn_swig_py_c_strings_to_list(
if (ob == NULL)
goto error;
if (PyList_Append(list, ob) == -1)
+ {
+ Py_DECREF(ob);
goto error;
+ }
+ Py_DECREF(ob);
}
return list;
@@ -2587,6 +2637,126 @@ svn_error_t *svn_swig_py_repos_history_f
return err;
}
+svn_error_t *svn_swig_py_repos_freeze_func(void *baton,
+ apr_pool_t *pool)
+{
+ PyObject *receiver = baton;
+ PyObject *py_pool;
+ PyObject *result;
+ svn_error_t *err = SVN_NO_ERROR;
+
+ if ((receiver == NULL) || (receiver == Py_None))
+ return SVN_NO_ERROR;
+
+ svn_swig_py_acquire_py_lock();
+
+ py_pool = make_ob_pool(pool);
+ if (py_pool == NULL)
+ {
+ err = callback_exception_error();
+ goto finished;
+ }
+
+ result = PyObject_CallFunction(receiver, (char *)"O", py_pool);
+ if (result == NULL)
+ {
+ err = callback_exception_error();
+ }
+ else
+ {
+ if (result != Py_None)
+ err = callback_bad_return_error("Not None");
+ Py_DECREF(result);
+ }
+
+ Py_DECREF(py_pool);
+
+finished:
+ svn_swig_py_release_py_lock();
+ return err;
+}
+
+svn_error_t *svn_swig_py_proplist_receiver2(void *baton,
+ const char *path,
+ apr_hash_t *prop_hash,
+ apr_array_header_t *inherited_props,
+ apr_pool_t *pool)
+{
+ PyObject *receiver = baton;
+ PyObject *py_pool;
+ PyObject *py_props;
+ PyObject *py_iprops;
+ PyObject *result;
+ svn_error_t *err = SVN_NO_ERROR;
+
+ if ((receiver == NULL) || (receiver == Py_None))
+ return SVN_NO_ERROR;
+
+ svn_swig_py_acquire_py_lock();
+
+ py_pool = make_ob_pool(pool);
+ if (py_pool == NULL)
+ {
+ err = callback_exception_error();
+ goto finished;
+ }
+
+ if (prop_hash)
+ {
+ py_props = svn_swig_py_prophash_to_dict(prop_hash);
+ if (py_props == NULL)
+ {
+ err = type_conversion_error("apr_hash_t *");
+ Py_DECREF(py_pool);
+ goto finished;
+ }
+ }
+ else
+ {
+ py_props = Py_None;
+ Py_INCREF(Py_None);
+ }
+
+ if (inherited_props)
+ {
+ py_iprops = svn_swig_py_propinheriteditemarray_to_dict(inherited_props);
+ if (py_iprops == NULL)
+ {
+ err = type_conversion_error("apr_array_header_t *");
+ Py_DECREF(py_props);
+ Py_DECREF(py_pool);
+ goto finished;
+ }
+ }
+ else
+ {
+ py_iprops = Py_None;
+ Py_INCREF(Py_None);
+ }
+
+ result = PyObject_CallFunction(receiver,
+ (char *)"sOOO",
+ path, py_props, py_iprops, py_pool);
+ if (result == NULL)
+ {
+ err = callback_exception_error();
+ }
+ else
+ {
+ if (result != Py_None)
+ err = callback_bad_return_error("Not None");
+ Py_DECREF(result);
+ }
+
+ Py_DECREF(py_props);
+ Py_DECREF(py_iprops);
+ Py_DECREF(py_pool);
+
+finished:
+ svn_swig_py_release_py_lock();
+ return err;
+}
+
svn_error_t *svn_swig_py_log_receiver(void *baton,
apr_hash_t *changed_paths,
@@ -3114,6 +3284,57 @@ svn_swig_py_auth_ssl_client_cert_pw_prom
return err;
}
+svn_error_t *
+svn_swig_py_auth_cleanup_func(svn_boolean_t *delete_cred,
+ void *cleanup_baton,
+ const char *cred_kind,
+ const char *realmstring,
+ const char *provider,
+ apr_pool_t *scratch_pool)
+{
+ PyObject *function = cleanup_baton;
+ PyObject *result;
+ PyObject *py_scratch_pool;
+ svn_error_t *err = SVN_NO_ERROR;
+
+ *delete_cred = FALSE;
+
+ if (function == NULL || function == Py_None)
+ return SVN_NO_ERROR;
+
+ svn_swig_py_acquire_py_lock();
+
+ py_scratch_pool = make_ob_pool(scratch_pool);
+ if (py_scratch_pool == NULL)
+ {
+ err = callback_exception_error();
+ goto finished;
+ }
+
+ if ((result = PyObject_CallFunction(function,
+ (char *)"sssO",
+ cred_kind, realmstring,
+ provider, py_scratch_pool)) == NULL)
+ {
+ err = callback_exception_error();
+ }
+ else
+ {
+ if (PyInt_Check(result))
+ *delete_cred = PyInt_AsLong(result) ? TRUE : FALSE;
+ else if (PyLong_Check(result))
+ *delete_cred = PyLong_AsLong(result) ? TRUE : FALSE;
+ else
+ err = callback_bad_return_error("Not an integer");
+ Py_DECREF(result);
+ }
+ Py_DECREF(py_scratch_pool);
+
+finished:
+ svn_swig_py_release_py_lock();
+ return err;
+}
+
/* svn_ra_callbacks_t */
static svn_error_t *
ra_callbacks_open_tmp_file(apr_file_t **fp,
Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h Mon Apr 8 11:47:02 2013
@@ -215,6 +215,13 @@ apr_array_header_t *svn_swig_py_proparra
SVN_SWIG_SWIGUTIL_EXPORT
PyObject *svn_swig_py_proparray_to_dict(const apr_array_header_t *array);
+/* helper function to convert a 'apr_array_header_t *' of
+ 'svn_prop_inherited_item_t' to a Python dictionary mapping strings
+ to dictionary. */
+SVN_SWIG_SWIGUTIL_EXPORT
+PyObject *
+svn_swig_py_propinheriteditemarray_to_dict(const apr_array_header_t *array);
+
/* helper function to convert a Python dictionary mapping strings to
strings into an apr_hash_t mapping const char *'s to svn_string_t's,
allocated in POOL. */
@@ -399,6 +406,19 @@ svn_error_t *svn_swig_py_log_entry_recei
svn_log_entry_t *log_entry,
apr_pool_t *pool);
+/* thunked freeze function */
+SVN_SWIG_SWIGUTIL_EXPORT
+svn_error_t *svn_swig_py_repos_freeze_func(void *baton,
+ apr_pool_t *pool);
+
+/* thunked proplist receiver2 function */
+SVN_SWIG_SWIGUTIL_EXPORT
+svn_error_t *svn_swig_py_proplist_receiver2(void *baton,
+ const char *path,
+ apr_hash_t *prop_hash,
+ apr_array_header_t *inherited_props,
+ apr_pool_t *pool);
+
/* thunked info receiver function */
SVN_SWIG_SWIGUTIL_EXPORT
svn_error_t *svn_swig_py_info_receiver_func(void *py_receiver,
@@ -481,6 +501,15 @@ svn_error_t *svn_swig_py_auth_ssl_client
svn_boolean_t may_save,
apr_pool_t *pool);
+/* auth cleanup callback */
+SVN_SWIG_SWIGUTIL_EXPORT
+svn_error_t *svn_swig_py_auth_cleanup_func(svn_boolean_t *delete_cred,
+ void *cleanup_baton,
+ const char *cred_kind,
+ const char *realmstring,
+ const char *provider,
+ apr_pool_t *scratch_pool);
+
SVN_SWIG_SWIGUTIL_EXPORT
void
svn_swig_py_setup_ra_callbacks(svn_ra_callbacks2_t **callbacks,
Propchange: subversion/branches/verify-keep-going/subversion/bindings/swig/python/tests/checksum.py
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/python/tests/client.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/python/tests/client.py?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/python/tests/client.py (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/python/tests/client.py Mon Apr 8 11:47:02 2013
@@ -397,6 +397,47 @@ class SubversionClientTestCase(unittest.
core.svn_auth_set_gnome_keyring_unlock_prompt_func(self.client_ctx.auth_baton, prompt_func)
+ def proplist_receiver_trunk(self, path, props, iprops, pool):
+ self.assertEquals(props['svn:global-ignores'], '*.q\n')
+ self.proplist_receiver_trunk_calls += 1
+
+ def proplist_receiver_dir1(self, path, props, iprops, pool):
+ self.assertEquals(iprops[self.proplist_receiver_dir1_key],
+ {'svn:global-ignores':'*.q\n'})
+ self.proplist_receiver_dir1_calls += 1
+
+ def test_inherited_props(self):
+ """Test inherited props"""
+
+ trunk_url = self.repos_uri + '/trunk'
+ client.propset_remote('svn:global-ignores', '*.q', trunk_url,
+ False, 12, {}, None, self.client_ctx)
+
+ head = core.svn_opt_revision_t()
+ head.kind = core.svn_opt_revision_head
+ props, iprops, rev = client.propget5('svn:global-ignores', trunk_url,
+ head, head, core.svn_depth_infinity,
+ None, self.client_ctx)
+ self.assertEquals(props[trunk_url], '*.q\n')
+
+ dir1_url = trunk_url + '/dir1'
+ props, iprops, rev = client.propget5('svn:global-ignores', dir1_url,
+ head, head, core.svn_depth_infinity,
+ None, self.client_ctx)
+ self.assertEquals(iprops[trunk_url], {'svn:global-ignores':'*.q\n'})
+
+ self.proplist_receiver_trunk_calls = 0
+ client.proplist4(trunk_url, head, head, core.svn_depth_empty, None, True,
+ self.proplist_receiver_trunk, self.client_ctx)
+ self.assertEquals(self.proplist_receiver_trunk_calls, 1)
+
+ self.proplist_receiver_dir1_calls = 0
+ self.proplist_receiver_dir1_key = trunk_url
+ client.proplist4(dir1_url, head, head, core.svn_depth_empty, None, True,
+ self.proplist_receiver_dir1, self.client_ctx)
+ self.assertEquals(self.proplist_receiver_dir1_calls, 1)
+
+
def suite():
return unittest.defaultTestLoader.loadTestsFromTestCase(
SubversionClientTestCase)
Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/python/tests/repository.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/python/tests/repository.py?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/python/tests/repository.py (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/python/tests/repository.py Mon Apr 8 11:47:02 2013
@@ -54,7 +54,7 @@ class SubversionRepositoryTestCase(unitt
def setUp(self):
"""Load a Subversion repository"""
self.temper = utils.Temper()
- (self.repos, _, _) = self.temper.alloc_known_repo(
+ (self.repos, self.repos_path, _) = self.temper.alloc_known_repo(
'trac/versioncontrol/tests/svnrepos.dump', suffix='-repository')
self.fs = repos.fs(self.repos)
self.rev = fs.youngest_rev(self.fs)
@@ -198,6 +198,16 @@ class SubversionRepositoryTestCase(unitt
_authz_callback),
"Youngest revision")
+ def freeze_body(self, pool):
+ self.freeze_invoked += 1
+
+ def test_freeze(self):
+ """Test repository freeze"""
+
+ self.freeze_invoked = 0
+ repos.freeze([self.repos_path], self.freeze_body)
+ self.assertEqual(self.freeze_invoked, 1)
+
def suite():
return unittest.defaultTestLoader.loadTestsFromTestCase(
SubversionRepositoryTestCase)
Modified: subversion/branches/verify-keep-going/subversion/include/svn_auth.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/include/svn_auth.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/include/svn_auth.h (original)
+++ subversion/branches/verify-keep-going/subversion/include/svn_auth.h Mon Apr 8 11:47:02 2013
@@ -790,22 +790,42 @@ svn_auth_get_simple_provider2(
*
* @since New in 1.8.
*/
-typedef svn_error_t * (*svn_auth_cleanup_callback)(svn_boolean_t *delete_cred,
- void *cleanup_baton,
- const char *cred_kind,
- const char *realmstring,
- const char *provider,
- apr_pool_t *scratch_pool);
-
-/** Call @a cleanup with information describing each currently cached
- * credential (in providers that support iterating). If the callback
- * confirms that the credential should be deleted, delete it.
+
+/* ### FIXME: The PROVIDER string here is both ill-defined and
+ ### misleading. First, Subversion's proprietary plaintext password
+ ### cache isn't a "provider" -- it's a data store for several
+ ### different providers. As such, it doesn't even have a provider
+ ### name. In fact, the only other public API that uses string
+ ### provider names is svn_auth_get_platform_specific_provider(),
+ ### and the strings it uses aren't even the same ones that we use
+ ### internally to identify third-party password stores.
+*/
+typedef svn_error_t *(*svn_auth_cleanup_func_t)(svn_boolean_t *delete_cred,
+ void *cleanup_baton,
+ const char *cred_kind,
+ const char *realmstring,
+ const char *provider,
+ apr_pool_t *scratch_pool);
+
+/** Call @a cleanup_func with information describing each currently
+ * cached credential (in providers registered with @a auth_baton that
+ * support iterating). If the callback confirms that the credential
+ * should be deleted, delete it.
+ *
+ * ### FIXME: As it turns out, the above is just false.
+ * ### svn_auth_cleanup_walk() could be just as happy using an
+ * ### auth_baton that has no providers at all, as the plumbing it
+ * ### uses has no provider-centricity to it whatsoever. It currently
+ * ### does check to ensure that there is at least one provider of
+ * ### kind SVN_AUTH_CRED_SIMPLE registered with the baton, but it's
+ * ### not clear why, since this interface ultimately crawls and
+ * ### deletes credentials of all available kinds.
*
* @since New in 1.8.
*/
svn_error_t *
svn_auth_cleanup_walk(svn_auth_baton_t *auth_baton,
- svn_auth_cleanup_callback cleanup,
+ svn_auth_cleanup_func_t cleanup_func,
void *cleanup_baton,
apr_pool_t *scratch_pool);
Modified: subversion/branches/verify-keep-going/subversion/include/svn_error.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/include/svn_error.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/include/svn_error.h (original)
+++ subversion/branches/verify-keep-going/subversion/include/svn_error.h Mon Apr 8 11:47:02 2013
@@ -66,6 +66,20 @@ svn_strerror(apr_status_t statcode,
apr_size_t bufsize);
+/**
+ * Return the symbolic name of an error code. If the error code
+ * is not a Subversion error code (from svn_error_codes.h), return @c NULL.
+ *
+ * @note In rare cases, a single numeric code has more than one symbolic name.
+ * (For example, #SVN_ERR_WC_NOT_DIRECTORY and #SVN_ERR_WC_NOT_WORKING_COPY).
+ * In those cases, it is not guaranteed which symbolic name is returned.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_error_symbolic_name(apr_status_t statcode);
+
+
/** If @a err has a custom error message, return that, otherwise
* store the generic error string associated with @a err->apr_err into
* @a buf (terminating with NULL) and return @a buf.
Modified: subversion/branches/verify-keep-going/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/include/svn_error_codes.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/verify-keep-going/subversion/include/svn_error_codes.h Mon Apr 8 11:47:02 2013
@@ -46,6 +46,10 @@
not defined the enumerated constants yet. */
#if defined(SVN_ERROR_BUILD_ARRAY) || !defined(SVN_ERROR_ENUM_DEFINED)
+/* Note: despite lacking double underscores in its name, the macro
+ SVN_ERROR_BUILD_ARRAY is an implementation detail of Subversion and not
+ a public API. */
+
#include <apr_errno.h> /* APR's error system */
@@ -59,9 +63,9 @@ extern "C" {
#define SVN_ERROR_START \
static const err_defn error_table[] = { \
- { SVN_WARNING, "Warning" },
-#define SVN_ERRDEF(num, offset, str) { num, str },
-#define SVN_ERROR_END { 0, NULL } };
+ { SVN_WARNING, "SVN_WARNING", "Warning" },
+#define SVN_ERRDEF(num, offset, str) { num, #num, str },
+#define SVN_ERROR_END { 0, NULL, NULL } };
#elif !defined(SVN_ERROR_ENUM_DEFINED)
@@ -905,6 +909,11 @@ SVN_ERROR_START
SVN_ERR_RA_CATEGORY_START + 11,
"Session URL does not match expected session URL")
+ /** @since New in 1.8. */
+ SVN_ERRDEF(SVN_ERR_RA_CANNOT_CREATE_TUNNEL,
+ SVN_ERR_RA_CATEGORY_START + 12,
+ "Can't create tunnel")
+
/* ra_dav errors */
SVN_ERRDEF(SVN_ERR_RA_DAV_SOCK_INIT,
@@ -983,115 +992,6 @@ SVN_ERROR_START
SVN_ERRDEF(SVN_ERR_RA_LOCAL_REPOS_OPEN_FAILED,
SVN_ERR_RA_LOCAL_CATEGORY_START + 1,
"Couldn't open a repository")
- /* ra_svn errors */
-
- SVN_ERRDEF(SVN_ERR_RA_SVN_CMD_ERR,
- SVN_ERR_RA_SVN_CATEGORY_START + 0,
- "Special code for wrapping server errors to report to client")
-
- SVN_ERRDEF(SVN_ERR_RA_SVN_UNKNOWN_CMD,
- SVN_ERR_RA_SVN_CATEGORY_START + 1,
- "Unknown svn protocol command")
-
- SVN_ERRDEF(SVN_ERR_RA_SVN_CONNECTION_CLOSED,
- SVN_ERR_RA_SVN_CATEGORY_START + 2,
- "Network connection closed unexpectedly")
-
- SVN_ERRDEF(SVN_ERR_RA_SVN_IO_ERROR,
- SVN_ERR_RA_SVN_CATEGORY_START + 3,
- "Network read/write error")
-
- SVN_ERRDEF(SVN_ERR_RA_SVN_MALFORMED_DATA,
- SVN_ERR_RA_SVN_CATEGORY_START + 4,
- "Malformed network data")
-
- SVN_ERRDEF(SVN_ERR_RA_SVN_REPOS_NOT_FOUND,
- SVN_ERR_RA_SVN_CATEGORY_START + 5,
- "Couldn't find a repository")
-
- SVN_ERRDEF(SVN_ERR_RA_SVN_BAD_VERSION,
- SVN_ERR_RA_SVN_CATEGORY_START + 6,
- "Client/server version mismatch")
-
- /** @since New in 1.5. */
- SVN_ERRDEF(SVN_ERR_RA_SVN_NO_MECHANISMS,
- SVN_ERR_RA_SVN_CATEGORY_START + 7,
- "Cannot negotiate authentication mechanism")
-
- /** @since New in 1.7 */
- SVN_ERRDEF(SVN_ERR_RA_SVN_EDIT_ABORTED,
- SVN_ERR_RA_SVN_CATEGORY_START + 8,
- "Editor drive was aborted")
-
- /* libsvn_ra_serf errors */
- /** @since New in 1.5. */
- SVN_ERRDEF(SVN_ERR_RA_SERF_SSPI_INITIALISATION_FAILED,
- SVN_ERR_RA_SERF_CATEGORY_START + 0,
- "Initialization of SSPI library failed")
- /** @since New in 1.5. */
- SVN_ERRDEF(SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED,
- SVN_ERR_RA_SERF_CATEGORY_START + 1,
- "Server SSL certificate untrusted")
- /** @since New in 1.7.
- @deprecated GSSAPI now handled by serf rather than libsvn_ra_serf. */
- SVN_ERRDEF(SVN_ERR_RA_SERF_GSSAPI_INITIALISATION_FAILED,
- SVN_ERR_RA_SERF_CATEGORY_START + 2,
- "Initialization of the GSSAPI context failed")
-
- /** @since New in 1.7. */
- SVN_ERRDEF(SVN_ERR_RA_SERF_WRAPPED_ERROR,
- SVN_ERR_RA_SERF_CATEGORY_START + 3,
- "While handling serf response:")
-
- /* libsvn_auth errors */
-
- /* this error can be used when an auth provider doesn't have
- the creds, but no other "real" error occurred. */
- SVN_ERRDEF(SVN_ERR_AUTHN_CREDS_UNAVAILABLE,
- SVN_ERR_AUTHN_CATEGORY_START + 0,
- "Credential data unavailable")
-
- SVN_ERRDEF(SVN_ERR_AUTHN_NO_PROVIDER,
- SVN_ERR_AUTHN_CATEGORY_START + 1,
- "No authentication provider available")
-
- SVN_ERRDEF(SVN_ERR_AUTHN_PROVIDERS_EXHAUSTED,
- SVN_ERR_AUTHN_CATEGORY_START + 2,
- "All authentication providers exhausted")
-
- SVN_ERRDEF(SVN_ERR_AUTHN_CREDS_NOT_SAVED,
- SVN_ERR_AUTHN_CATEGORY_START + 3,
- "Credentials not saved")
-
- /** @since New in 1.5. */
- SVN_ERRDEF(SVN_ERR_AUTHN_FAILED,
- SVN_ERR_AUTHN_CATEGORY_START + 4,
- "Authentication failed")
-
- /* authorization errors */
-
- SVN_ERRDEF(SVN_ERR_AUTHZ_ROOT_UNREADABLE,
- SVN_ERR_AUTHZ_CATEGORY_START + 0,
- "Read access denied for root of edit")
-
- /** @since New in 1.1. */
- SVN_ERRDEF(SVN_ERR_AUTHZ_UNREADABLE,
- SVN_ERR_AUTHZ_CATEGORY_START + 1,
- "Item is not readable")
-
- /** @since New in 1.1. */
- SVN_ERRDEF(SVN_ERR_AUTHZ_PARTIALLY_READABLE,
- SVN_ERR_AUTHZ_CATEGORY_START + 2,
- "Item is partially readable")
-
- SVN_ERRDEF(SVN_ERR_AUTHZ_INVALID_CONFIG,
- SVN_ERR_AUTHZ_CATEGORY_START + 3,
- "Invalid authz configuration")
-
- /** @since New in 1.3 */
- SVN_ERRDEF(SVN_ERR_AUTHZ_UNWRITABLE,
- SVN_ERR_AUTHZ_CATEGORY_START + 4,
- "Item is not writable")
/* svndiff errors */
@@ -1119,12 +1019,6 @@ SVN_ERROR_START
SVN_ERR_SVNDIFF_CATEGORY_START + 5,
"Svndiff compressed data is invalid")
- /* libsvn_diff errors */
-
- SVN_ERRDEF(SVN_ERR_DIFF_DATASOURCE_MODIFIED,
- SVN_ERR_DIFF_CATEGORY_START + 0,
- "Diff data source modified unexpectedly")
-
/* mod_dav_svn errors */
SVN_ERRDEF(SVN_ERR_APMOD_MISSING_PATH_TO_FS,
@@ -1490,6 +1384,123 @@ SVN_ERROR_START
SVN_ERR_CL_CATEGORY_START + 11,
"Failed processing one or more externals definitions")
+ /* ra_svn errors */
+
+ SVN_ERRDEF(SVN_ERR_RA_SVN_CMD_ERR,
+ SVN_ERR_RA_SVN_CATEGORY_START + 0,
+ "Special code for wrapping server errors to report to client")
+
+ SVN_ERRDEF(SVN_ERR_RA_SVN_UNKNOWN_CMD,
+ SVN_ERR_RA_SVN_CATEGORY_START + 1,
+ "Unknown svn protocol command")
+
+ SVN_ERRDEF(SVN_ERR_RA_SVN_CONNECTION_CLOSED,
+ SVN_ERR_RA_SVN_CATEGORY_START + 2,
+ "Network connection closed unexpectedly")
+
+ SVN_ERRDEF(SVN_ERR_RA_SVN_IO_ERROR,
+ SVN_ERR_RA_SVN_CATEGORY_START + 3,
+ "Network read/write error")
+
+ SVN_ERRDEF(SVN_ERR_RA_SVN_MALFORMED_DATA,
+ SVN_ERR_RA_SVN_CATEGORY_START + 4,
+ "Malformed network data")
+
+ SVN_ERRDEF(SVN_ERR_RA_SVN_REPOS_NOT_FOUND,
+ SVN_ERR_RA_SVN_CATEGORY_START + 5,
+ "Couldn't find a repository")
+
+ SVN_ERRDEF(SVN_ERR_RA_SVN_BAD_VERSION,
+ SVN_ERR_RA_SVN_CATEGORY_START + 6,
+ "Client/server version mismatch")
+
+ /** @since New in 1.5. */
+ SVN_ERRDEF(SVN_ERR_RA_SVN_NO_MECHANISMS,
+ SVN_ERR_RA_SVN_CATEGORY_START + 7,
+ "Cannot negotiate authentication mechanism")
+
+ /** @since New in 1.7 */
+ SVN_ERRDEF(SVN_ERR_RA_SVN_EDIT_ABORTED,
+ SVN_ERR_RA_SVN_CATEGORY_START + 8,
+ "Editor drive was aborted")
+
+ /* libsvn_auth errors */
+
+ /* this error can be used when an auth provider doesn't have
+ the creds, but no other "real" error occurred. */
+ SVN_ERRDEF(SVN_ERR_AUTHN_CREDS_UNAVAILABLE,
+ SVN_ERR_AUTHN_CATEGORY_START + 0,
+ "Credential data unavailable")
+
+ SVN_ERRDEF(SVN_ERR_AUTHN_NO_PROVIDER,
+ SVN_ERR_AUTHN_CATEGORY_START + 1,
+ "No authentication provider available")
+
+ SVN_ERRDEF(SVN_ERR_AUTHN_PROVIDERS_EXHAUSTED,
+ SVN_ERR_AUTHN_CATEGORY_START + 2,
+ "All authentication providers exhausted")
+
+ SVN_ERRDEF(SVN_ERR_AUTHN_CREDS_NOT_SAVED,
+ SVN_ERR_AUTHN_CATEGORY_START + 3,
+ "Credentials not saved")
+
+ /** @since New in 1.5. */
+ SVN_ERRDEF(SVN_ERR_AUTHN_FAILED,
+ SVN_ERR_AUTHN_CATEGORY_START + 4,
+ "Authentication failed")
+
+ /* authorization errors */
+
+ SVN_ERRDEF(SVN_ERR_AUTHZ_ROOT_UNREADABLE,
+ SVN_ERR_AUTHZ_CATEGORY_START + 0,
+ "Read access denied for root of edit")
+
+ /** @since New in 1.1. */
+ SVN_ERRDEF(SVN_ERR_AUTHZ_UNREADABLE,
+ SVN_ERR_AUTHZ_CATEGORY_START + 1,
+ "Item is not readable")
+
+ /** @since New in 1.1. */
+ SVN_ERRDEF(SVN_ERR_AUTHZ_PARTIALLY_READABLE,
+ SVN_ERR_AUTHZ_CATEGORY_START + 2,
+ "Item is partially readable")
+
+ SVN_ERRDEF(SVN_ERR_AUTHZ_INVALID_CONFIG,
+ SVN_ERR_AUTHZ_CATEGORY_START + 3,
+ "Invalid authz configuration")
+
+ /** @since New in 1.3 */
+ SVN_ERRDEF(SVN_ERR_AUTHZ_UNWRITABLE,
+ SVN_ERR_AUTHZ_CATEGORY_START + 4,
+ "Item is not writable")
+
+
+ /* libsvn_diff errors */
+
+ SVN_ERRDEF(SVN_ERR_DIFF_DATASOURCE_MODIFIED,
+ SVN_ERR_DIFF_CATEGORY_START + 0,
+ "Diff data source modified unexpectedly")
+
+ /* libsvn_ra_serf errors */
+ /** @since New in 1.5. */
+ SVN_ERRDEF(SVN_ERR_RA_SERF_SSPI_INITIALISATION_FAILED,
+ SVN_ERR_RA_SERF_CATEGORY_START + 0,
+ "Initialization of SSPI library failed")
+ /** @since New in 1.5. */
+ SVN_ERRDEF(SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED,
+ SVN_ERR_RA_SERF_CATEGORY_START + 1,
+ "Server SSL certificate untrusted")
+ /** @since New in 1.7.
+ @deprecated GSSAPI now handled by serf rather than libsvn_ra_serf. */
+ SVN_ERRDEF(SVN_ERR_RA_SERF_GSSAPI_INITIALISATION_FAILED,
+ SVN_ERR_RA_SERF_CATEGORY_START + 2,
+ "Initialization of the GSSAPI context failed")
+
+ /** @since New in 1.7. */
+ SVN_ERRDEF(SVN_ERR_RA_SERF_WRAPPED_ERROR,
+ SVN_ERR_RA_SERF_CATEGORY_START + 3,
+ "While handling serf response:")
+
/* malfunctions such as assertion failures */
SVN_ERRDEF(SVN_ERR_ASSERTION_FAIL,
Modified: subversion/branches/verify-keep-going/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/include/svn_fs.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/include/svn_fs.h (original)
+++ subversion/branches/verify-keep-going/subversion/include/svn_fs.h Mon Apr 8 11:47:02 2013
@@ -2040,6 +2040,41 @@ svn_fs_youngest_rev(svn_revnum_t *younge
apr_pool_t *pool);
+/**
+ * Return filesystem format information for @a fs.
+ *
+ * Set @a *fs_format to the filesystem format number of @a fs, which is
+ * an integer that increases when incompatible changes are made (such as
+ * by #svn_fs_upgrade).
+ *
+ * Set @a *supports_version to the version number of the minimum Subversion GA
+ * release that can read and write @a fs.
+ *
+ * @see svn_repos_info_format()
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_fs_info_format(int *fs_format,
+ svn_version_t **supports_version,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+/**
+ * Return a list of admin-serviceable config files for @a fs. @a *files
+ * will be set to an array containing paths as C strings.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_fs_info_config_files(apr_array_header_t **files,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+
+
/** Provide filesystem @a fs the opportunity to compress storage relating to
* associated with @a revision in filesystem @a fs. Use @a pool for all
* allocations.
@@ -2500,6 +2535,77 @@ svn_fs_verify_root(svn_fs_root_t *root,
/** @} */
+/**
+ * @defgroup fs_info Filesystem information subsystem
+ * @{
+ */
+
+/**
+ * A structure that provides some information about a filesystem.
+ * Returned by svn_fs_info().
+ *
+ * @note Fields may be added to the end of this structure in future
+ * versions. Therefore, users shouldn't allocate structures of this
+ * type, to preserve binary compatibility.
+ *
+ * @since New in 1.8.
+ */
+typedef struct svn_fs_info_t {
+
+#if 0
+ /* Potential future feature. */
+ svn_boolean_t is_write_locked;
+#endif
+
+ /** Filesystem backend (#fs_type) -specific information.
+ * @see SVN_FS_FSFS_INFO_* */
+ apr_hash_t *fsap_info;
+
+} svn_fs_info_t;
+
+/**
+ * Set @a *info to an info struct describing @a fs.
+ *
+ * @see #svn_fs_info_t
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_fs_info(const svn_fs_info_t **info,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+/**
+ * Return a duplicate of @a info, allocated in @a pool. No part of the new
+ * structure will be shared with @a info.
+ *
+ * @since New in 1.8.
+ */
+svn_fs_info_t *
+svn_fs_info_dup(const svn_fs_info_t *info,
+ apr_pool_t *result_pool);
+
+/** @name FSFS-specific #svn_fs_info_t information.
+ * @since New in 1.8.
+ * @{
+ */
+
+/** Value: shard size (as int), or 0 if the filesystem is
+ * not currently sharded. */
+#define SVN_FS_FSFS_INFO_SHARDED "sharded"
+
+/** Value: abspath to rep-cache.db, or absent if that doesn't exist.
+ @note Do not modify the db schema or tables!
+ */
+#define SVN_FS_FSFS_INFO_REP_CACHE_PATH "rep-cache-path"
+
+/** The smallest revision (as #svn_revnum_t) which is not in a pack file.
+ * @note Zero (0) if (but not iff) the format does not support packing. */
+#define SVN_FS_FSFS_INFO_MIN_UNPACKED_REV "min-unpacked-rev"
+/** @} */
+
+/** @} */
#ifdef __cplusplus
}
Modified: subversion/branches/verify-keep-going/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/include/svn_ra.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/include/svn_ra.h (original)
+++ subversion/branches/verify-keep-going/subversion/include/svn_ra.h Mon Apr 8 11:47:02 2013
@@ -1104,6 +1104,12 @@ svn_ra_get_mergeinfo(svn_ra_session_t *s
* (Note: this means that any subsequent txdeltas coming from the
* server are presumed to apply against the copied file!)
*
+ * Use @a ignore_ancestry to control whether or not items being
+ * updated will be checked for relatedness first. Unrelated items
+ * are typically transmitted to the editor as a deletion of one thing
+ * and the addition of another, but if this flag is @c TRUE,
+ * unrelated items will be diffed as if they were related.
+ *
* The working copy will be updated to @a revision_to_update_to, or the
* "latest" revision if this arg is invalid.
*
@@ -1111,7 +1117,8 @@ svn_ra_get_mergeinfo(svn_ra_session_t *s
* finishing the report, and may not perform any RA operations using
* @a session from within the editing operations of @a update_editor.
*
- * Use @a pool for memory allocation.
+ * Allocate @a *reporter and @a *report_baton in @a result_pool. Use
+ * @a scratch_pool for temporary allocations.
*
* @note The reporter provided by this function does NOT supply copy-
* from information to the diff editor callbacks.
@@ -1120,13 +1127,36 @@ svn_ra_get_mergeinfo(svn_ra_session_t *s
* needed, and sending too much data back, a pre-1.5 'recurse'
* directive may be sent to the server, based on @a depth.
*
+ * @note Pre Subversion 1.8 svnserve based servers never ignore ancestry.
+ *
* @note This differs from calling svn_ra_do_switch3() with the current
* URL of the target node. Update changes only the revision numbers,
* leaving any switched subtrees still switched, whereas switch changes
* every node in the tree to a child of the same URL.
*
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_ra_do_update3(svn_ra_session_t *session,
+ const svn_ra_reporter3_t **reporter,
+ void **report_baton,
+ svn_revnum_t revision_to_update_to,
+ const char *update_target,
+ svn_depth_t depth,
+ svn_boolean_t send_copyfrom_args,
+ svn_boolean_t ignore_ancestry,
+ const svn_delta_editor_t *update_editor,
+ void *update_baton,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_ra_do_update3(), but always ignoring ancestry.
+ *
* @since New in 1.5.
+ * @deprecated Provided for compatibility with the 1.4 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_ra_do_update2(svn_ra_session_t *session,
const svn_ra_reporter3_t **reporter,
@@ -1163,22 +1193,11 @@ svn_ra_do_update(svn_ra_session_t *sessi
/**
* Ask the RA layer to switch a working copy to a new revision and URL.
*
- * This is similar to svn_ra_do_update2(), but also changes the URL of
+ * This is similar to svn_ra_do_update3(), but also changes the URL of
* every node in the target tree to a child of the @a switch_url. In
* contrast, update changes only the revision numbers, leaving any
* switched subtrees still switched.
*
- * The other differences from svn_ra_do_update2() are:
- *
- * Use @a ignore_ancestry to control whether or not items being
- * switched will be checked for relatedness first. Unrelated items
- * are typically transmitted to the editor as a deletion of one thing
- * and the addition of another, but if this flag is @c TRUE,
- * unrelated items will be diffed as if they were related.
- *
- * Use @a result_pool for memory allocation and @a scratch_pool for
- * temporary work.
- *
* @note Pre Subversion 1.8 svnserve based servers always ignore ancestry
* and never send copyfrom data.
*
@@ -1320,7 +1339,7 @@ svn_ra_do_status(svn_ra_session_t *sessi
* it's another form of svn_ra_do_update2().
*
* @note This function cannot be used to diff a single file, only a
- * working copy directory. See the svn_ra_do_switch2() function
+ * working copy directory. See the svn_ra_do_switch3() function
* for more details.
*
* The client initially provides a @a diff_editor/@a diff_baton to the RA
@@ -1949,7 +1968,7 @@ svn_ra_get_deleted_rev(svn_ra_session_t
* paths relative to the repository root URL (of the repository which
* @a ra_session is associated).
*
- * Allocated @a *inherited_props in @a result_pool, use @a scratch_pool
+ * Allocate @a *inherited_props in @a result_pool. Use @a scratch_pool
* for temporary allocations.
*
* @since New in 1.8.
Modified: subversion/branches/verify-keep-going/subversion/include/svn_ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/include/svn_ra_svn.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/include/svn_ra_svn.h (original)
+++ subversion/branches/verify-keep-going/subversion/include/svn_ra_svn.h Mon Apr 8 11:47:02 2013
@@ -164,66 +164,6 @@ typedef struct svn_ra_svn_item_t
typedef svn_error_t *(*svn_ra_svn_edit_callback)(void *baton);
-/**
- * List of all commands supported by the SVN:// protocol.
- *
- * @since New in 1.8
- */
-typedef enum svn_ra_svn_cmd_t
-{
- svn_ra_svn_cmd_target_rev,
- svn_ra_svn_cmd_open_root,
- svn_ra_svn_cmd_delete_entry,
- svn_ra_svn_cmd_add_dir,
- svn_ra_svn_cmd_open_dir,
- svn_ra_svn_cmd_change_dir_prop,
- svn_ra_svn_cmd_close_dir,
- svn_ra_svn_cmd_absent_dir,
- svn_ra_svn_cmd_add_file,
- svn_ra_svn_cmd_open_file,
- svn_ra_svn_cmd_change_file_prop,
- svn_ra_svn_cmd_close_file,
- svn_ra_svn_cmd_absent_file,
- svn_ra_svn_cmd_textdelta_chunk,
- svn_ra_svn_cmd_textdelta_end,
- svn_ra_svn_cmd_apply_textdelta,
- svn_ra_svn_cmd_close_edit,
- svn_ra_svn_cmd_abort_edit,
-
- svn_ra_svn_cmd_set_path,
- svn_ra_svn_cmd_delete_path,
- svn_ra_svn_cmd_link_path,
- svn_ra_svn_cmd_finish_report,
- svn_ra_svn_cmd_abort_report,
-
- svn_ra_svn_cmd_reparent,
- svn_ra_svn_cmd_get_latest_rev,
- svn_ra_svn_cmd_get_dated_rev,
- svn_ra_svn_cmd_change_rev_prop2,
- svn_ra_svn_cmd_change_rev_prop,
- svn_ra_svn_cmd_rev_proplist,
- svn_ra_svn_cmd_rev_prop,
- svn_ra_svn_cmd_get_file,
- svn_ra_svn_cmd_update,
- svn_ra_svn_cmd_switch,
- svn_ra_svn_cmd_status,
- svn_ra_svn_cmd_diff,
- svn_ra_svn_cmd_check_path,
- svn_ra_svn_cmd_stat,
- svn_ra_svn_cmd_get_file_revs,
- svn_ra_svn_cmd_lock,
- svn_ra_svn_cmd_unlock,
- svn_ra_svn_cmd_get_lock,
- svn_ra_svn_cmd_get_locks,
- svn_ra_svn_cmd_replay,
- svn_ra_svn_cmd_replay_range,
- svn_ra_svn_cmd_get_deleted_rev,
- svn_ra_svn_cmd_get_iprops,
- svn_ra_svn_cmd_finish_replay,
-
- svn_ra_svn_cmd__last
-} svn_ra_svn_cmd_t;
-
/** Initialize a connection structure for the given socket or
* input/output files.
*
@@ -548,7 +488,7 @@ svn_ra_svn_handle_commands(svn_ra_svn_co
* as svn_ra_svn_write_tuple().
*
* @deprecated Provided for backward compatibility with the 1.7 API.
- * Use svn_ra_svn_write_templated_cmd instead.
+ * Use the svn_ra_svn_write_cmd_* functions instead.
*/
SVN_DEPRECATED
svn_error_t *
@@ -557,17 +497,6 @@ svn_ra_svn_write_cmd(svn_ra_svn_conn_t *
const char *cmdname,
const char *fmt, ...);
-/** Write a command of type @a cmd over the network connection @a conn.
- * The parameters to be provided are command-specific. @a pool will be
- * used for allocations.
- *
- * @since New in 1.8.
- */
-svn_error_t *
-svn_ra_svn_write_templated_cmd(svn_ra_svn_conn_t *conn,
- apr_pool_t *pool,
- svn_ra_svn_cmd_t cmd, ...);
-
/** Write a successful command response over the network, using the
* same format string notation as svn_ra_svn_write_tuple(). Do not use
* partial tuples with this function; if you need to use partial
@@ -642,6 +571,548 @@ svn_ra_svn_cram_server(svn_ra_svn_conn_t
const svn_version_t *
svn_ra_svn_version(void);
+/**
+ * @defgroup svn_commands sending ra_svn commands
+ * @{
+ */
+
+/** Sets the target revision of connection @a conn to @a rev. Use @a pool
+ * for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_target_rev(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_revnum_t rev);
+
+/** Send a "open-root" command over connection @a conn. Open the
+ * repository root at revision @a rev and associate it with @a token.
+ * Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_open_root(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_revnum_t rev,
+ const char *token);
+
+/** Send a "delete-entry" command over connection @a conn. Delete the
+ * @a path at optional revision @a rev below @a parent_token.
+ * Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_delete_entry(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ svn_revnum_t rev,
+ const char *parent_token);
+
+/** Send a "add-dir" command over connection @a conn. Add a new directory
+ * node named @a path under the directory identified by @a parent_token.
+ * Associate the new directory with the given @a token. * @a copy_path
+ * and @a copy_rev are optional and describe the copy source.
+ * Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_add_dir(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ const char *parent_token,
+ const char *token,
+ const char *copy_path,
+ svn_revnum_t copy_rev);
+
+/** Send a "open-dir" command over connection @a conn. Associate to
+ * @a token the directory node named @a path under the directory
+ * identified by @a parent_token in revision @a rev.
+ * Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_open_dir(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ const char *parent_token,
+ const char *token,
+ svn_revnum_t rev);
+
+/** Send a "change-dir-prop" command over connection @a conn. Set the
+ * property @a name to the optional @a value on the directory identified
+ * to @a token. Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_change_dir_prop(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *token,
+ const char *name,
+ const svn_string_t *value);
+
+/** Send a "close-dir" command over connection @a conn. Identify the node
+ * to close with @a token. The latter will then no longer be associated
+ * with that node. Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_close_dir(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *token);
+
+/** Send a "absent-dir" command over connection @a conn. Directory node
+ * named @a path under the directory identified by @a parent_token is
+ * absent. Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_absent_dir(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ const char *parent_token);
+
+/** Send a "add-file" command over connection @a conn. Add a new file
+ * node named @a path under the directory identified by @a parent_token.
+ * Associate the new file with the given @a token. * @a copy_path and
+ * @a copy_rev are optional and describe the copy source.
+ * Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_add_file(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ const char *parent_token,
+ const char *token,
+ const char *copy_path,
+ svn_revnum_t copy_rev);
+
+/** Send a "open-file" command over connection @a conn. Associate to
+ * @a token the file node named @a path under the directory identified by
+ * @a parent_token in revision @a rev.
+ * Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_open_file(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ const char *parent_token,
+ const char *token,
+ svn_revnum_t rev);
+
+/** Send a "change-file-prop" command over connection @a conn. Set the
+ * property @a name to the optional @a value on the file identified to
+ * @a token. Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_change_file_prop(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *token,
+ const char *name,
+ const svn_string_t *value);
+
+/** Send a "close-dir" command over connection @a conn. Identify the node
+ * to close with @a token and provide an optional @a check_sum. The token
+ * will then no longer be associated with that node.
+ * Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_close_file(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *token,
+ const char *text_checksum);
+
+/** Send a "absent-file" command over connection @a conn. File node
+ * named @a path in the directory identified by @a parent_token is
+ * absent. Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_absent_file(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ const char *parent_token);
+
+/** Send a "apply-textdelta" command over connection @a conn. Starts a
+ * series of text deltas to be applied to the file identified by @a token.
+ * Optionally, specify the file's current checksum in @a base_checksum.
+ * Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_apply_textdelta(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *token,
+ const char *base_checksum);
+
+/** Send a "textdelta-chunk" command over connection @a conn. Apply
+ * textdelta @a chunk to the file identified by @a token.
+ * Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_textdelta_chunk(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *token,
+ const svn_string_t *chunk);
+
+/** Send a "textdelta-end" command over connection @a conn. Ends the
+ * series of text deltas to be applied to the file identified by @a token.
+ * Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_textdelta_end(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *token);
+
+/** Send a "close-edit" command over connection @a conn. Ends the editor
+ * drive (successfully). Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_close_edit(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool);
+
+/** Send a "abort-edit" command over connection @a conn. Prematurely ends
+ * the editor drive, e.g. due to some problem on the other side.
+ * Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_abort_edit(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool);
+
+/** Send a "set-path" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see set_path() in #svn_ra_reporter3_t for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_set_path(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ svn_revnum_t rev,
+ svn_boolean_t start_empty,
+ const char *lock_token,
+ svn_depth_t depth);
+
+/** Send a "delete-path" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see delete_path() in #svn_ra_reporter3_t for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_delete_path(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path);
+
+/** Send a "link-path" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see link_path() in #svn_ra_reporter3_t for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_link_path(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ const char *url,
+ svn_revnum_t rev,
+ svn_boolean_t start_empty,
+ const char *lock_token,
+ svn_depth_t depth);
+
+/** Send a "finish-report" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see finish_report() in #svn_ra_reporter3_t for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_finish_report(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool);
+
+/** Send a "abort-report" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see abort_report() in #svn_ra_reporter3_t for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_abort_report(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool);
+
+/** Send a "reparent" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_reparent for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_reparent(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *url);
+
+/** Send a "get-latest-rev" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_get_latest_revnum for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_get_latest_rev(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool);
+
+/** Send a "get-dated-rev" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_get_dated_revision for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_get_dated_rev(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ apr_time_t tm);
+
+/** Send a "change-rev-prop2" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_change_rev_prop2 for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_change_rev_prop2(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_revnum_t rev,
+ const char *name,
+ const svn_string_t *value,
+ svn_boolean_t dont_care,
+ const svn_string_t *old_value);
+
+/** Send a "change-rev-prop" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_change_rev_prop for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_change_rev_prop(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_revnum_t rev,
+ const char *name,
+ const svn_string_t *value);
+
+/** Send a "rev-proplist" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_rev_proplist for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_rev_proplist(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_revnum_t rev);
+
+/** Send a "rev-prop" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_rev_prop for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_rev_prop(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_revnum_t rev,
+ const char *name);
+
+/** Send a "get-file" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_get_file for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_get_file(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ svn_revnum_t rev,
+ svn_boolean_t props,
+ svn_boolean_t stream);
+
+/** Send a "update" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_do_update3 for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_update(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_revnum_t rev,
+ const char *target,
+ svn_boolean_t recurse,
+ svn_depth_t depth,
+ svn_boolean_t send_copyfrom_args,
+ svn_boolean_t ignore_ancestry);
+
+/** Send a "switch" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_do_switch3 for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_switch(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_revnum_t rev,
+ const char *target,
+ svn_boolean_t recurse,
+ const char *switch_url,
+ svn_depth_t depth,
+ svn_boolean_t send_copyfrom_args,
+ svn_boolean_t ignore_ancestry);
+
+/** Send a "status" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_do_status2 for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_status(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *target,
+ svn_boolean_t recurse,
+ svn_revnum_t rev,
+ svn_depth_t depth);
+
+/** Send a "diff" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_do_diff3 for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_diff(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_revnum_t rev,
+ const char *target,
+ svn_boolean_t recurse,
+ svn_boolean_t ignore_ancestry,
+ const char *versus_url,
+ svn_boolean_t text_deltas,
+ svn_depth_t depth);
+
+/** Send a "check-path" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_check_path for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_check_path(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ svn_revnum_t rev);
+
+/** Send a "stat" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_stat for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_stat(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ svn_revnum_t rev);
+
+/** Send a "get-file-revs" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_get_file_revs2 for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_get_file_revs(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ svn_revnum_t start,
+ svn_revnum_t end,
+ svn_boolean_t include_merged_revisions);
+
+/** Send a "lock" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_lock for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_lock(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ const char *comment,
+ svn_boolean_t steal_lock,
+ svn_revnum_t revnum);
+
+/** Send a "unlock" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_unlock for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_unlock(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ const char *token,
+ svn_boolean_t break_lock);
+
+/** Send a "get-lock" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_get_lock for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_get_lock(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path);
+
+/** Send a "get-locks" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_get_locks2 for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_get_locks(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ svn_depth_t depth);
+
+/** Send a "replay" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_replay for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_replay(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_revnum_t rev,
+ svn_revnum_t low_water_mark,
+ svn_boolean_t send_deltas);
+
+/** Send a "replay-range" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_replay_range for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_replay_range(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_revnum_t start_revision,
+ svn_revnum_t end_revision,
+ svn_revnum_t low_water_mark,
+ svn_boolean_t send_deltas);
+
+/** Send a "get-deleted-rev" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_get_deleted_rev for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_get_deleted_rev(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ svn_revnum_t peg_revision,
+ svn_revnum_t end_revision);
+
+/** Send a "get-iprops" command over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @see #svn_ra_get_inherited_props for a description.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_get_iprops(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ svn_revnum_t revision);
+
+/** Send a "finish-replay" command over connection @a conn.
+ * Use @a pool for allocations.
+ */
+svn_error_t *
+svn_ra_svn_write_cmd_finish_replay(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool);
+
+/**
+ * @}
+ */
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/verify-keep-going/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/include/svn_repos.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/include/svn_repos.h (original)
+++ subversion/branches/verify-keep-going/subversion/include/svn_repos.h Mon Apr 8 11:47:02 2013
@@ -448,6 +448,11 @@ svn_repos_create(svn_repos_t **repos_p,
* It does *not* guarantee the most optimized repository state as a
* dump and subsequent load would.
*
+ * @note On some platforms the exclusive lock does not exclude other
+ * threads in the same process so this function should only be called
+ * by a single threaded process, or by a multi-threaded process when
+ * no other threads are accessing the repository.
+ *
* @since New in 1.7.
*/
svn_error_t *
@@ -498,6 +503,26 @@ svn_repos_has_capability(svn_repos_t *re
apr_pool_t *pool);
/**
+ * Return a set capabilities supported by the running Subversion library and by
+ * @a repos. (Capabilities supported by this version of Subversion but not by
+ * @a repos are not listed. This may happen when svn_repos_upgrade2() has not
+ * been called after a software upgrade.)
+ *
+ * The set is represented as a hash whose keys are the set members. The values
+ * are not defined.
+ *
+ * @see svn_repos_info()
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_repos_capabilities(apr_hash_t **capabilities,
+ svn_repos_t *repos,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+/** @} */
+
+/**
* The capability of doing the right thing with merge-tracking
* information, both storing it and responding to queries about it.
*
@@ -511,6 +536,8 @@ svn_repos_has_capability(svn_repos_t *re
* colons for their own reasons. While this RA limitation has no
* direct impact on repository capabilities, there's no reason to be
* gratuitously different either.
+ *
+ * If you add a capability, update svn_repos_capabilities().
*/
@@ -665,6 +692,13 @@ svn_repos_recover(const char *path,
apr_pool_t *pool);
/**
+ * Callback for svn_repos_freeze.
+ *
+ * @since New in 1.8.
+ */
+typedef svn_error_t *(*svn_repos_freeze_func_t)(void *baton, apr_pool_t *pool);
+
+/**
* Take an exclusive lock on each of the repositories in @a paths to
* prevent commits and then while holding all the locks invoke @a
* freeze_body passing @a baton. Each repository may be readable by
@@ -672,11 +706,16 @@ svn_repos_recover(const char *path,
* FS backend the repository uses. Repositories are locked in the
* order in which they are specified in the array.
*
+ * @note On some platforms the exclusive lock does not exclude other
+ * threads in the same process so this function should only be called
+ * by a single threaded process, or by a multi-threaded process when
+ * no other threads are accessing the repositories.
+ *
* @since New in 1.8.
*/
svn_error_t *
svn_repos_freeze(apr_array_header_t *paths,
- svn_error_t *(*freeze_body)(void *baton, apr_pool_t *pool),
+ svn_repos_freeze_func_t freeze_body,
void *baton,
apr_pool_t *pool);
@@ -798,8 +837,7 @@ svn_repos_post_unlock_hook(svn_repos_t *
* file in its default location within the repository disk structure.
* If @a hooks_env_path is not absolute, it specifies a path relative
* to the parent of the file's default location.
- *
- * @a result_pool should be the same pool that @a repos was allocated in.
+ *
* Use @a scratch_pool for temporary allocations.
*
* If this function is not called, or if the specified configuration
@@ -811,7 +849,6 @@ svn_repos_post_unlock_hook(svn_repos_t *
svn_error_t *
svn_repos_hooks_setenv(svn_repos_t *repos,
const char *hooks_env_path,
- apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
/** @} */
@@ -2367,7 +2404,6 @@ svn_repos_fs_change_txn_props(svn_fs_txn
const apr_array_header_t *props,
apr_pool_t *pool);
-/** @} */
/* ---------------------------------------------------------------*/
@@ -2458,6 +2494,27 @@ svn_repos_node_editor(const svn_delta_ed
svn_repos_node_t *
svn_repos_node_from_baton(void *edit_baton);
+/**
+ * Return repository format information for @a repos.
+ *
+ * Set @a *repos_format to the repository format number of @a repos, which is
+ * an integer that increases when incompatible changes are made (such as
+ * by #svn_repos_upgrade).
+ *
+ * Set @a *supports_version to the version number of the minimum Subversion GA
+ * release that can read and write @a repos.
+ *
+ * @see svn_fs_info_format()
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_repos_info_format(int *repos_format,
+ svn_version_t **supports_version,
+ svn_repos_t *repos,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
/** @} */
/* ---------------------------------------------------------------*/
@@ -2566,9 +2623,12 @@ svn_repos_verify_fs3(svn_repos_t *repos,
svn_cancel_func_t cancel,
void *cancel_baton,
apr_pool_t *scratch_pool);
+
/**
* Like svn_repos_verify_fs3(), but with @a keep_going set to @c FALSE.
+ *
* @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
*/
SVN_DEPRECATED
svn_error_t *
@@ -3404,7 +3464,6 @@ svn_repos_remember_client_capabilities(s
const apr_array_header_t *capabilities);
-
#ifdef __cplusplus
}
#endif /* __cplusplus */