You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by cm...@apache.org on 2011/07/19 18:16:05 UTC

svn commit: r1148426 - in /subversion/trunk/subversion/libsvn_client: client.h merge.c

Author: cmpilato
Date: Tue Jul 19 16:16:04 2011
New Revision: 1148426

URL: http://svn.apache.org/viewvc?rev=1148426&view=rev
Log:
Avoid some unnecessary comparisons and such by undoing an
ensure-ra-session-url using svn_ra_reparent() directly.

CONFESSION: This commit has only been sanity-tested.  It should "just
work", right?

* subversion/libsvn_client/client.h
  (svn_client__ensure_ra_session_url): Note the typical (and correct)
    usage pattern of this function.

* subversion/libsvn_client/merge.c
  (get_full_mergeinfo, get_invalid_inherited_mergeinfo): Use
    svn_ra_reparent() instead of svn_client__ensure_ra_session_url()
    where we know the reparent wouldn't be a no-op.

Modified:
    subversion/trunk/subversion/libsvn_client/client.h
    subversion/trunk/subversion/libsvn_client/merge.c

Modified: subversion/trunk/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/client.h?rev=1148426&r1=1148425&r2=1148426&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/client.h (original)
+++ subversion/trunk/subversion/libsvn_client/client.h Tue Jul 19 16:16:04 2011
@@ -223,7 +223,21 @@ svn_client__ra_session_from_path(svn_ra_
    NULL.
 
    If SESSION_URL is NULL, treat this as a magic value meaning "point
-   the RA session to the root of the repository".  */
+   the RA session to the root of the repository".
+
+   NOTE: The typical usage pattern for this functions is:
+
+       const char *old_session_url;
+       SVN_ERR(svn_client__ensure_ra_session_url(&old_session_url,
+                                                 ra_session,
+                                                 new_session_url,
+                                                 pool);
+
+       [...]
+
+       if (old_session_url)
+         SVN_ERR(svn_ra_reparent(ra_session, old_session_url, pool));
+*/
 svn_error_t *
 svn_client__ensure_ra_session_url(const char **old_session_url,
                                   svn_ra_session_t *ra_session,

Modified: subversion/trunk/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=1148426&r1=1148425&r2=1148426&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Tue Jul 19 16:16:04 2011
@@ -3263,8 +3263,7 @@ get_invalid_inherited_mergeinfo(svn_merg
       /* If we needed to temporarily reparent RA_SESSION, then point it
          back to its original URL. */
       if (session_url)
-        SVN_ERR(svn_client__ensure_ra_session_url(&session_url, ra_session,
-                                                  session_url, scratch_pool));
+        SVN_ERR(svn_ra_reparent(ra_session, session_url, scratch_pool));
     }
   return SVN_NO_ERROR;
 }
@@ -3434,9 +3433,7 @@ get_full_mergeinfo(svn_mergeinfo_t *reco
                                                        result_pool));
 
           /* Return RA_SESSION back to where it was when we were called. */
-         SVN_ERR(svn_client__ensure_ra_session_url(&session_url,
-                                                   ra_session, session_url,
-                                                   scratch_pool));
+          SVN_ERR(svn_ra_reparent(ra_session, session_url, scratch_pool));
         }
     } /*if (implicit_mergeinfo) */