[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r1496468 - /subversion/trunk/subversion/libsvn_client/ra.c

From: Ivan Zhakov <ivan_at_visualsvn.com>
Date: Tue, 25 Jun 2013 17:47:10 +0400

On Tue, Jun 25, 2013 at 5:32 PM, <rhuijben_at_apache.org> wrote:
> Author: rhuijben
> Date: Tue Jun 25 13:32:16 2013
> New Revision: 1496468
>
> URL: http://svn.apache.org/r1496468
> Log:
> Use a cheaper ra operation for a common libsvn_client calculation.
>
> * subversion/libsvn_client/ra.c
> (repos_locations): Optimize common diff ra request for diff for the old
> location of the repository root.
>
[...]

======
> --- subversion/trunk/subversion/libsvn_client/ra.c (original)
> +++ subversion/trunk/subversion/libsvn_client/ra.c Tue Jun 25 13:32:16 2013
> @@ -668,9 +668,9 @@ repos_locations(const char **start_url,
> apr_array_header_t *revs;
> apr_hash_t *rev_locs;
>
> - SVN_ERR_ASSERT(peg_revnum != SVN_INVALID_REVNUM);
> - SVN_ERR_ASSERT(start_revnum != SVN_INVALID_REVNUM);
> - SVN_ERR_ASSERT(end_revnum != SVN_INVALID_REVNUM || end_url == NULL);
> + SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(peg_revnum));
> + SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(start_revnum));
> + SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(end_revnum) || end_url == NULL);
>
> /* Avoid a network request in the common easy case. */
> if (start_revnum == peg_revnum
> @@ -685,6 +685,26 @@ repos_locations(const char **start_url,
>
> SVN_ERR(svn_ra_get_repos_root2(ra_session, &repos_url, scratch_pool));
>
> + /* Handle another common case: The repository root can't move */
> + if (! strcmp(repos_url, url))
> + {
> + svn_revnum_t latest_revnum;
> + SVN_ERR(svn_ra_get_latest_revnum(ra_session, &latest_revnum,
> + scratch_pool));
> +
> + if (start_revnum > latest_revnum || end_revnum > latest_revnum)
end_revnum can be SVN_INVALID_REVNUM if end_url is NULL. So this
condition should be fixed.

Also it probably makes sense to move this optimization to caller
(svn_client__repos_locations) since most likely youngest is already
known at this layer.

-- 
Ivan Zhakov
CTO | VisualSVN | http://www.visualsvn.com
Received on 2013-06-25 15:48:04 CEST

This is an archived mail posted to the Subversion Dev mailing list.