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 2015/02/03 12:49:13 UTC

svn commit: r1656694 - in /subversion/trunk/subversion: include/private/svn_ra_private.h include/svn_ra.h libsvn_client/diff.c libsvn_ra/ra_loader.c

Author: rhuijben
Date: Tue Feb  3 11:49:13 2015
New Revision: 1656694

URL: http://svn.apache.org/r1656694
Log:
Rename svn_ra_dup_session() (public api) to svn_ra__dup_session (private api).

No functional changes.

* subversion/include/private/svn_ra_private.h
  (svn_ra__dup_session): New function.

* subversion/include/svn_ra.h
  (svn_ra_dup_session): Remove function

* subversion/libsvn_client/diff.c
  (includes): Add svn_ra_private.h.
  (diff_repos_repos): Update caller.

* subversion/libsvn_ra/ra_loader.c
  (svn_ra_dup_session): Rename to...
  (svn_ra__dup_session): ... this.
  (svn_ra_stat): Update caller (in svnserve fallback code).

Modified:
    subversion/trunk/subversion/include/private/svn_ra_private.h
    subversion/trunk/subversion/include/svn_ra.h
    subversion/trunk/subversion/libsvn_client/diff.c
    subversion/trunk/subversion/libsvn_ra/ra_loader.c

Modified: subversion/trunk/subversion/include/private/svn_ra_private.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_ra_private.h?rev=1656694&r1=1656693&r2=1656694&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_ra_private.h (original)
+++ subversion/trunk/subversion/include/private/svn_ra_private.h Tue Feb  3 11:49:13 2015
@@ -39,6 +39,33 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+
+/**
+ * Open a new ra session @a *new_session to the same repository as an existing
+ * ra session @a old_session, copying the callbacks, auth baton, etc. from the
+ * old session. This essentially limits the lifetime of the new, duplicated
+ * session to the lifetime of the old session. If the new session should
+ * outlive the new session, creating a new session using svn_ra_open4() is
+ * recommended.
+ *
+ * If @a session_url is not NULL, parent the new session at session_url. Note
+ * that @a session_url MUST BE in the same repository as @a old_session or an
+ * error will be returned. When @a session_url NULL the same session root
+ * will be used.
+ *
+ * Allocate @a new_session in @a result_pool. Perform temporary allocations
+ * in @a scratch_pool.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_ra__dup_session(svn_ra_session_t **new_session,
+                    svn_ra_session_t *old_session,
+                    const char *session_url,
+                    apr_pool_t *result_pool,
+                    apr_pool_t *scratch_pool);
+
 /* Equivalent to svn_ra__assert_capable_server()
    for SVN_RA_CAPABILITY_MERGEINFO. */
 svn_error_t *

Modified: subversion/trunk/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_ra.h?rev=1656694&r1=1656693&r2=1656694&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_ra.h (original)
+++ subversion/trunk/subversion/include/svn_ra.h Tue Feb  3 11:49:13 2015
@@ -785,32 +785,6 @@ svn_ra_open(svn_ra_session_t **session_p
             apr_hash_t *config,
             apr_pool_t *pool);
 
-/**
- * Open a new ra session @a *new_session to the same repository as an existing
- * ra session @a old_session, copying the callbacks, auth baton, etc. from the
- * old session. This essentially limits the lifetime of the new, duplicated
- * session to the lifetime of the old session. If the new session should
- * outlive the new session, creating a new session using svn_ra_open4() is
- * recommended.
- *
- * If @a session_url is not NULL, parent the new session at session_url. Note
- * that @a session_url MUST BE in the same repository as @a old_session or an
- * error will be returned. When @a session_url NULL the same session root
- * will be used.
- *
- * Allocate @a new_session in @a result_pool. Perform temporary allocations
- * in @a scratch_pool.
- *
- * @since New in 1.9.
- */
-svn_error_t *
-svn_ra_dup_session(svn_ra_session_t **new_session,
-                   svn_ra_session_t *old_session,
-                   const char *session_url,
-                   apr_pool_t *result_pool,
-                   apr_pool_t *scratch_pool);
-
-
 /** Change the root URL of an open @a ra_session to point to a new path in the
  * same repository.  @a url is the new root URL.  Use @a pool for
  * temporary allocations.

Modified: subversion/trunk/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/diff.c?rev=1656694&r1=1656693&r2=1656694&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/diff.c (original)
+++ subversion/trunk/subversion/libsvn_client/diff.c Tue Feb  3 11:49:13 2015
@@ -52,6 +52,7 @@
 #include "private/svn_diff_private.h"
 #include "private/svn_subr_private.h"
 #include "private/svn_io_private.h"
+#include "private/svn_ra_private.h"
 
 #include "svn_private_config.h"
 
@@ -1805,8 +1806,8 @@ diff_repos_repos(const char **root_relpa
   /* Now, we open an extra RA session to the correct anchor
      location for URL1.  This is used during the editor calls to fetch file
      contents.  */
-  SVN_ERR(svn_ra_dup_session(&extra_ra_session, ra_session, anchor1,
-                             scratch_pool, scratch_pool));
+  SVN_ERR(svn_ra__dup_session(&extra_ra_session, ra_session, anchor1,
+                              scratch_pool, scratch_pool));
 
   if (ddi)
     {

Modified: subversion/trunk/subversion/libsvn_ra/ra_loader.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra/ra_loader.c?rev=1656694&r1=1656693&r2=1656694&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra/ra_loader.c (original)
+++ subversion/trunk/subversion/libsvn_ra/ra_loader.c Tue Feb  3 11:49:13 2015
@@ -531,11 +531,11 @@ svn_error_t *svn_ra_open4(svn_ra_session
 }
 
 svn_error_t *
-svn_ra_dup_session(svn_ra_session_t **new_session,
-                   svn_ra_session_t *old_session,
-                   const char *session_url,
-                   apr_pool_t *result_pool,
-                   apr_pool_t *scratch_pool)
+svn_ra__dup_session(svn_ra_session_t **new_session,
+                    svn_ra_session_t *old_session,
+                    const char *session_url,
+                    apr_pool_t *result_pool,
+                    apr_pool_t *scratch_pool)
 {
   svn_ra_session_t *session;
 
@@ -1010,8 +1010,8 @@ svn_error_t *svn_ra_stat(svn_ra_session_
               svn_uri_split(&parent_url, &base_name, session_url,
                             scratch_pool);
 
-              SVN_ERR(svn_ra_dup_session(&parent_session, session, parent_url,
-                                         scratch_pool, scratch_pool));
+              SVN_ERR(svn_ra__dup_session(&parent_session, session, parent_url,
+                                          scratch_pool, scratch_pool));
 
               /* Get all parent's entries, no props. */
               SVN_ERR(svn_ra_get_dir2(parent_session, &parent_ents, NULL,



Re: svn commit: r1656694 - in /subversion/trunk/subversion: include/private/svn_ra_private.h include/svn_ra.h libsvn_client/diff.c libsvn_ra/ra_loader.c

Posted by Branko Čibej <br...@wandisco.com>.
On 03.02.2015 13:28, Julian Foad wrote:
> Branko Čibej wrote:
>> On 03.02.2015 12:49, rhuijben@apache.org wrote:
>>>   URL: http://svn.apache.org/r1656694
>>>   Log:
>>>   Rename svn_ra_dup_session() (public api) to svn_ra__dup_session (private 
>> api).
>>
>> +1000
> Presumably you both have in mind some reason why this change is beneficial. (I saw you discussing on IRC about it being "unsafe" or some such.) Could you please hint at the reason for this, in the log message?

There are severe constraints on where and how one may use the duplicate
session. Rather than explain them at length in docs and deal with tons
of spurious bug reports, I think it's better to keep this for private
use within libsvn_client; *especially* if we manage to merge the
reuse-ra-session branch to trunk, where use of duplicate sessions that
may be based on something that's managed by libsvn_client's session
cache is far too error-prone to be useful.

The RA session cache will, in most cases, make session duplication less
useful anyway.

-- Brane

Re: svn commit: r1656694 - in /subversion/trunk/subversion: include/private/svn_ra_private.h include/svn_ra.h libsvn_client/diff.c libsvn_ra/ra_loader.c

Posted by Julian Foad <ju...@btopenworld.com>.
Branko Čibej wrote:
> On 03.02.2015 12:49, rhuijben@apache.org wrote:
>>  URL: http://svn.apache.org/r1656694
>>  Log:
>>  Rename svn_ra_dup_session() (public api) to svn_ra__dup_session (private 
> api).
> 
> +1000

Presumably you both have in mind some reason why this change is beneficial. (I saw you discussing on IRC about it being "unsafe" or some such.) Could you please hint at the reason for this, in the log message?

- Julian


Re: svn commit: r1656694 - in /subversion/trunk/subversion: include/private/svn_ra_private.h include/svn_ra.h libsvn_client/diff.c libsvn_ra/ra_loader.c

Posted by Branko Čibej <br...@wandisco.com>.
On 03.02.2015 12:49, rhuijben@apache.org wrote:
> Author: rhuijben
> Date: Tue Feb  3 11:49:13 2015
> New Revision: 1656694
>
> URL: http://svn.apache.org/r1656694
> Log:
> Rename svn_ra_dup_session() (public api) to svn_ra__dup_session (private api).

+1000