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

svn commit: r1149626 - /subversion/trunk/subversion/libsvn_client/merge.c

Author: pburba
Date: Fri Jul 22 14:52:46 2011
New Revision: 1149626

URL: http://svn.apache.org/viewvc?rev=1149626&view=rev
Log:
Follow-up to r1149228: Add some comments describing the optimizations for
issue #3966 'log_noop_revs is far too slow'.

* subversion/libsvn_client/merge.c

  (log_noop_revs, remove_noop_subtree_ranges): Document the requirement that
   the svn_log_entry_receiver_t receiver must be invoked from oldest to
   youngest revision.

Suggested by: gstein

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

Modified: subversion/trunk/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=1149626&r1=1149625&r2=1149626&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Fri Jul 22 14:52:46 2011
@@ -7934,6 +7934,9 @@ rangelist_merge_revision(apr_array_heade
 
    Use SCRATCH_POOL for temporary allocations.  Allocate additions to
    BATON->MERGED_RANGES and BATON->OPERATIVE_RANGES in BATON->POOL.
+
+   Note: This callback must be invoked from oldest LOG_ENTRY->REVISION
+   to youngest LOG_ENTRY->REVISION -- see rangelist_merge_revision().
 */
 static svn_error_t *
 log_noop_revs(void *baton,
@@ -8174,6 +8177,11 @@ remove_noop_subtree_ranges(const char *u
 
   APR_ARRAY_PUSH(log_targets, const char *) = "";
 
+  /* Invoke the svn_log_entry_receiver_t receiver log_noop_revs() from
+     oldest to youngest.  The receiver is optimized to add ranges to
+     log_gap_baton.merged_ranges and log_gap_baton.operative_ranges, but
+     requires that the revs arrive oldest to youngest -- see log_noop_revs()
+     and rangelist_merge_revision(). */
   SVN_ERR(svn_ra_get_log2(ra_session, log_targets, oldest_gap_rev->start + 1,
                           youngest_gap_rev->end, 0, TRUE, TRUE, FALSE,
                           apr_array_make(scratch_pool, 0,