You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by gs...@apache.org on 2012/05/10 07:47:49 UTC
svn commit: r1336485 - /subversion/trunk/subversion/libsvn_ra_serf/property.c
Author: gstein
Date: Thu May 10 05:47:48 2012
New Revision: 1336485
URL: http://svn.apache.org/viewvc?rev=1336485&view=rev
Log:
Simplify get_baseline_info() since it has only one caller.
* subversion/libsvn_ra_serf/property.c:
(get_baseline_info): remove BC_RELATIVE and URL parameters. reorder
and rename LATEST_REVNUM to REVNUM_USED. no longer allow URL,
CONN, or REVNUM_USED to be NULL.
(svn_ra_serf__get_stable_url): handle NULL for URL, CONN, and
LATEST_REVNUM here. process URL into the REPOS_RELPATH here.
adjust params to get_baseline_info()
Modified:
subversion/trunk/subversion/libsvn_ra_serf/property.c
Modified: subversion/trunk/subversion/libsvn_ra_serf/property.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/property.c?rev=1336485&r1=1336484&r2=1336485&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/property.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/property.c Thu May 10 05:47:48 2012
@@ -1027,43 +1027,22 @@ svn_ra_serf__get_youngest_revnum(svn_rev
}
-/* Set *BC_URL to the baseline collection url, and set *BC_RELATIVE to
- the path relative to that url for URL in REVISION using SESSION.
- BC_RELATIVE will be URI decoded.
+/* Set *BC_URL to the baseline collection url for REVISION. If REVISION
+ is SVN_INVALID_REVNUM, then the youngest revnum ("HEAD") is used.
- REVISION may be SVN_INVALID_REVNUM (to mean "the current HEAD
- revision"). If URL is NULL, use SESSION's session url.
+ *REVNUM_USED will be set to the revision used.
- If LATEST_REVNUM is not NULL, set it to the baseline revision. If
- REVISION was set to SVN_INVALID_REVNUM, this will return the current
- HEAD revision.
+ Uses the specified CONN, which is part of SESSION.
- If non-NULL, use CONN for communications with the server;
- otherwise, use the default connection.
-
- All temporary allocations are performed in SCRATCH_POOL. */
+ All allocations (results and temporary) are performed in POOL. */
static svn_error_t *
get_baseline_info(const char **bc_url,
- const char **bc_relative,
+ svn_revnum_t *revnum_used,
svn_ra_serf__session_t *session,
svn_ra_serf__connection_t *conn,
- const char *url,
svn_revnum_t revision,
- svn_revnum_t *latest_revnum,
apr_pool_t *pool)
{
- const char *basecoll_url;
- const char *relative_url;
-
- /* No URL? No sweat. We'll use the session URL. */
- if (! url)
- url = session->session_url.path;
-
- /* If the caller didn't provide a specific connection for us to use,
- we'll use the default one. */
- if (! conn)
- conn = session->conns[0];
-
/* If we detected HTTP v2 support on the server, we can construct
the baseline collection URL ourselves, and fetch the latest
revision (if needed) with an OPTIONS request. */
@@ -1073,22 +1052,20 @@ get_baseline_info(const char **bc_url,
if (SVN_IS_VALID_REVNUM(revision))
{
- actual_revision = revision;
+ *revnum_used = revision;
}
else
{
SVN_ERR(svn_ra_serf__v2_get_youngest_revnum(
- &actual_revision, conn, pool));
+ revnum_used, conn, pool));
if (! SVN_IS_VALID_REVNUM(actual_revision))
return svn_error_create(SVN_ERR_RA_DAV_OPTIONS_REQ_FAILED, NULL,
_("The OPTIONS response did not include "
"the youngest revision"));
}
- basecoll_url = apr_psprintf(pool, "%s/%ld",
- session->rev_root_stub, actual_revision);
- if (latest_revnum)
- *latest_revnum = actual_revision;
+ *bc_url = apr_psprintf(pool, "%s/%ld",
+ session->rev_root_stub, *revnum_used);
}
/* Otherwise, we fall back to the old VCC_URL PROPFIND hunt. */
@@ -1101,44 +1078,27 @@ get_baseline_info(const char **bc_url,
if (SVN_IS_VALID_REVNUM(revision))
{
/* First check baseline information cache. */
- SVN_ERR(svn_ra_serf__blncache_get_bc_url(&basecoll_url,
+ SVN_ERR(svn_ra_serf__blncache_get_bc_url(bc_url,
session->blncache,
revision, pool));
-
- if (!basecoll_url)
+ if (!*bc_url)
{
- SVN_ERR(retrieve_baseline_info(NULL, &basecoll_url, session,
+ SVN_ERR(retrieve_baseline_info(NULL, bc_url, session,
conn, vcc_url, revision, pool));
SVN_ERR(svn_ra_serf__blncache_set(session->blncache, NULL,
- revision, basecoll_url, pool));
+ revision, *bc_url, pool));
}
- if (latest_revnum)
- {
- *latest_revnum = revision;
- }
+ *revnum_used = revision;
}
else
{
- svn_revnum_t actual_revision;
-
- SVN_ERR(v1_get_youngest_revnum(&actual_revision, &basecoll_url,
+ SVN_ERR(v1_get_youngest_revnum(revnum_used, bc_url,
conn, vcc_url,
pool, pool));
-
- if (latest_revnum)
- {
- *latest_revnum = actual_revision;
- }
}
}
- /* And let's not forget to calculate our relative path. */
- SVN_ERR(svn_ra_serf__get_relative_path(&relative_url, url, session,
- conn, pool));
-
- *bc_url = basecoll_url;
- *bc_relative = relative_url;
return SVN_NO_ERROR;
}
@@ -1154,14 +1114,27 @@ svn_ra_serf__get_stable_url(const char *
apr_pool_t *scratch_pool)
{
const char *basecoll_url;
- const char *relpath;
+ const char *repos_relpath;
+ svn_revnum_t revnum_used;
+
+ /* No URL? No sweat. We'll use the session URL. */
+ if (! url)
+ url = session->session_url.path;
+
+ /* If the caller didn't provide a specific connection for us to use,
+ we'll use the default connection. */
+ if (! conn)
+ conn = session->conns[0];
+
+ SVN_ERR(get_baseline_info(&basecoll_url, &revnum_used,
+ session, conn, revision, scratch_pool));
+ SVN_ERR(svn_ra_serf__get_relative_path(&repos_relpath, url,
+ session, conn, scratch_pool));
- SVN_ERR(get_baseline_info(&basecoll_url, &relpath,
- session, conn,
- url, revision, latest_revnum,
- scratch_pool));
- *stable_url = svn_path_url_add_component2(basecoll_url, relpath,
+ *stable_url = svn_path_url_add_component2(basecoll_url, repos_relpath,
result_pool);
+ if (latest_revnum)
+ *latest_revnum = revnum_used;
return SVN_NO_ERROR;
}