I'm not familiar with this part of the code - can I have a second pair
of eyes over this, please?
[[[
* subversion/libsvn_client/blame.c
(svn_client_blame5): When opening the RA session, treat START and END
symmetrically: do not always open to END, since START may be younger.
]]]
[[[
Index: subversion/libsvn_client/blame.c
===================================================================
--- subversion/libsvn_client/blame.c (revision 1498532)
+++ subversion/libsvn_client/blame.c (working copy)
@@ -585,7 +585,6 @@ svn_client_blame5(const char *target,
struct file_rev_baton frb;
svn_ra_session_t *ra_session;
svn_revnum_t start_revnum, end_revnum;
- svn_client__pathrev_t *end_loc;
struct blame *walk, *walk_merged = NULL;
apr_pool_t *iterpool;
svn_stream_t *last_stream;
@@ -604,33 +603,34 @@ svn_client_blame5(const char *target,
SVN_ERR(svn_dirent_get_absolute(&target_abspath_or_url, target, pool));
/* Get an RA plugin for this filesystem object. */
- SVN_ERR(svn_client__ra_session_from_path2(&ra_session, &end_loc,
- target, NULL, peg_revision, end,
+ SVN_ERR(svn_client__ra_session_from_path2(&ra_session, NULL,
+ target, NULL, peg_revision,
+ peg_revision,
ctx, pool));
- end_revnum = end_loc->rev;
SVN_ERR(svn_client__get_revision_number(&start_revnum, NULL, ctx->wc_ctx,
target_abspath_or_url, ra_session,
start, pool));
- if (start_revnum > end_revnum)
- {
- /* Repeat the last bit of svn_client__ra_session_from_path2(), to end
- up where we would have ended up if we had passed 'start' rather than
- 'end' to it.
- ### Should we try calling
- ### svn_client__open_ra_session_internal(peg_revision, start)
- ### if calling it with (peg_revision, end) fails?
- */
- svn_client__pathrev_t *start_loc;
- SVN_ERR(svn_client__resolve_rev_and_url(&start_loc, ra_session,
- target, peg_revision, start,
- ctx, pool));
-
- /* Make the session point to the real URL. */
- SVN_ERR(svn_ra_reparent(ra_session, start_loc->url, pool));
- }
+ SVN_ERR(svn_client__get_revision_number(&end_revnum, NULL, ctx->wc_ctx,
+ target_abspath_or_url, ra_session,
+ end, pool));
+ {
+ svn_client__pathrev_t *loc;
+ svn_opt_revision_t younger_end;
+ younger_end.kind = svn_opt_revision_number;
+ younger_end.value.number = MAX(start_revnum, end_revnum);
+
+ SVN_ERR(svn_client__resolve_rev_and_url(&loc, ra_session,
+ target, peg_revision,
+ &younger_end,
+ ctx, pool));
+
+ /* Make the session point to the real URL. */
+ SVN_ERR(svn_ra_reparent(ra_session, loc->url, pool));
+ }
+
/* We check the mime-type of the yougest revision before getting all
the older revisions. */
if (!ignore_mime_type)
]]]
Received on 2013-07-01 18:51:39 CEST