Add svn_ra_initialize function.  Currently, it does nothing; the reason for it
is so we can require it when used with the new svn_ra APIs in 1.2.

* subversion/libsvn_ra/wrapper_template.h (COMPAT_INITFUNC): Add pool
  to INITFUNC call.

* subversion/libsvn_ra/ra_loader.c (svn_ra_initialize): New function.
  (svn_ra_open, svn_ra_print_modules): Add pool to init_func call.

* subversion/libsvn_ra/ra_loader.h
  (svn_ra__init_func_t, svn_ra__local_init, svn_ra__svn_init,
  svn_ra__dav_init): Add pool argument.

* subversion/include/svn_ra.h (svn_ra_initialize): Declare.

* subversion/libsvn_ra_local/ra_plugin.c (svn_ra_local__init),
* subversion/libsvn_ra_svn/client.c (svn_ra_svn__init),
* subversion/libsvn_ra_dav/session.c (svn_ra_dav__init): Add pool argument.

* subversion/svnversion/main.c (main): 
* subversion/clients/cmdline/main.c (main): Call svn_ra_initialize.


Index: subversion/libsvn_ra/wrapper_template.h
===================================================================
--- subversion/libsvn_ra/wrapper_template.h	(revision 14168)
+++ subversion/libsvn_ra/wrapper_template.h	(arbetskopia)
@@ -404,7 +404,7 @@
   /* We call the new init function so it can check library dependencies or
      do other initialization things.  We fake the loader version, since we
      rely on the ABI version check instead. */
-  SVN_ERR (INITFUNC (VTBL.get_version(), &vtable));
+  SVN_ERR (INITFUNC (VTBL.get_version(), &vtable, pool));
 
   schemes = VTBL.get_schemes (pool);
 
Index: subversion/libsvn_ra/ra_loader.c
===================================================================
--- subversion/libsvn_ra/ra_loader.c	(revision 14168)
+++ subversion/libsvn_ra/ra_loader.c	(arbetskopia)
@@ -224,6 +224,12 @@
 /* -------------------------------------------------------------- */
 
 /*** Public Interfaces ***/
+
+svn_error_t *svn_ra_initialize (apr_pool_t *pool)
+{
+  return SVN_NO_ERROR;
+}
+
 svn_error_t *svn_ra_open (svn_ra_session_t **session_p,
                           const char *repos_URL,
                           const svn_ra_callbacks_t *callbacks,
@@ -251,7 +257,7 @@
             /* Library not found. */
             break;
 
-          SVN_ERR (initfunc (svn_ra_version (), &vtable));
+          SVN_ERR (initfunc (svn_ra_version (), &vtable, pool));
 
           SVN_ERR (check_ra_version (vtable->get_version (), scheme));
         }
@@ -561,7 +567,7 @@
 
       if (initfunc)
         {
-          SVN_ERR (initfunc (svn_ra_version(), &vtable));
+          SVN_ERR (initfunc (svn_ra_version(), &vtable, pool));
 
           SVN_ERR (check_ra_version (vtable->get_version (), defn->ra_name));
 
Index: subversion/libsvn_ra/ra_loader.h
===================================================================
--- subversion/libsvn_ra/ra_loader.h	(revision 14168)
+++ subversion/libsvn_ra/ra_loader.h	(arbetskopia)
@@ -217,19 +217,25 @@
  * function must use the C calling convention on all platforms, so that
  * the init functions can safely read the version parameter.
  *
+ * POOL will be available as long as this module is being used.
+ *
  * ### need to force this to be __cdecl on Windows... how??
  */
 typedef svn_error_t
 *(*svn_ra__init_func_t)(const svn_version_t *loader_version,
-                        const svn_ra__vtable_t **vtable);
+                        const svn_ra__vtable_t **vtable,
+                        apr_pool_t *pool);
 
 /* Declarations of the init functions for the available RA libraries. */
 svn_error_t *svn_ra_local__init(const svn_version_t *loader_version,
-                                const svn_ra__vtable_t **vtable);
+                                const svn_ra__vtable_t **vtable,
+                                apr_pool_t *pool);
 svn_error_t *svn_ra_svn__init(const svn_version_t *loader_version,
-                                const svn_ra__vtable_t **vtable);
+                              const svn_ra__vtable_t **vtable,
+                              apr_pool_t *pool);
 svn_error_t *svn_ra_dav__init(const svn_version_t *loader_version,
-                                const svn_ra__vtable_t **vtable);
+                              const svn_ra__vtable_t **vtable,
+                              apr_pool_t *pool);
 
 #ifdef __cplusplus
 }
Index: subversion/include/svn_ra.h
===================================================================
--- subversion/include/svn_ra.h	(revision 14168)
+++ subversion/include/svn_ra.h	(arbetskopia)
@@ -349,6 +349,17 @@
 
 /* Public Interfaces. */
 
+/** @since New in 1.2.
+ *
+ * Initialize the RA library.  This function must be called before using
+ * any function in this header, except the deprecated APIs based on
+ * @c svn_ra_plugin_t, or svn_ra_version().  This function must not be called
+ * simultaneously in multiple threads.  @a pool must live
+ * longer than any open RA sessions.
+ */
+svn_error_t *
+svn_ra_initialize (apr_pool_t *pool);
+
 /**
  * @since New in 1.2.
  *
Index: subversion/libsvn_ra_local/ra_plugin.c
===================================================================
--- subversion/libsvn_ra_local/ra_plugin.c	(revision 14168)
+++ subversion/libsvn_ra_local/ra_plugin.c	(arbetskopia)
@@ -1262,7 +1262,8 @@
 
 svn_error_t *
 svn_ra_local__init (const svn_version_t *loader_version,
-                    const svn_ra__vtable_t **vtable)
+                    const svn_ra__vtable_t **vtable,
+                    apr_pool_t *pool)
 {
   static const svn_version_checklist_t checklist[] =
     {
Index: subversion/clients/cmdline/main.c
===================================================================
--- subversion/clients/cmdline/main.c	(revision 14168)
+++ subversion/clients/cmdline/main.c	(arbetskopia)
@@ -843,6 +843,11 @@
   if (err)
     return error_exit (err, stderr, FALSE, pool);
 
+  /* Initialize the RA library. */
+  err = svn_ra_initialize (pool);
+  if (err)
+    return error_exit (err, stderr, FALSE, pool);
+
   /* Begin processing arguments. */
   opt_state.start_revision.kind = svn_opt_revision_unspecified;
   opt_state.end_revision.kind = svn_opt_revision_unspecified;
Index: subversion/libsvn_ra_svn/client.c
===================================================================
--- subversion/libsvn_ra_svn/client.c	(revision 14169)
+++ subversion/libsvn_ra_svn/client.c	(arbetskopia)
@@ -1609,7 +1609,8 @@
 
 svn_error_t *
 svn_ra_svn__init (const svn_version_t *loader_version,
-                    const svn_ra__vtable_t **vtable)
+                  const svn_ra__vtable_t **vtable,
+                  apr_pool_t *pool)
 {
   static const svn_version_checklist_t checklist[] =
     {
Index: subversion/libsvn_ra_dav/session.c
===================================================================
--- subversion/libsvn_ra_dav/session.c	(revision 14168)
+++ subversion/libsvn_ra_dav/session.c	(arbetskopia)
@@ -1433,7 +1433,8 @@
 
 svn_error_t *
 svn_ra_dav__init (const svn_version_t *loader_version,
-                  const svn_ra__vtable_t **vtable)
+                  const svn_ra__vtable_t **vtable,
+                  apr_pool_t *pool)
 {
   static const svn_version_checklist_t checklist[] =
     {
Index: subversion/svnversion/main.c
===================================================================
--- subversion/svnversion/main.c	(revision 14168)
+++ subversion/svnversion/main.c	(arbetskopia)
@@ -21,6 +21,7 @@
 #include "svn_path.h"
 #include "svn_opt.h"
 #include "svn_fs.h"
+#include "svn_ra.h"
 
 #include "svn_private_config.h"
 
@@ -249,6 +250,16 @@
       return EXIT_FAILURE;
     }
 
+  /* Initialize the RA library. */
+  err = svn_ra_initialize (pool);
+  if (err)
+    {
+      svn_handle_error2 (err, stderr, FALSE, "svnversion: ");
+      svn_error_clear (err);
+      svn_pool_destroy (pool);
+      return EXIT_FAILURE;
+    }
+
   sb.switched = FALSE;
   sb.modified = FALSE;
   sb.committed = FALSE;
