You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ko...@apache.org on 2017/04/13 17:28:39 UTC

svn commit: r1791285 - /subversion/trunk/subversion/mod_dav_svn/reports/replay.c

Author: kotkov
Date: Thu Apr 13 17:28:39 2017
New Revision: 1791285

URL: http://svn.apache.org/viewvc?rev=1791285&view=rev
Log:
mod_dav_svn: Use compressed svndiff1 deltas when delivering replay
reports, if the client supports them.

Previously, such reports have always been using uncompressed svndiff0
format for deltas, even if the client has indicated that it would like
to see svndiff1 via the "Accept-Encoding" header.  Compression can
have a noticeable performance impact over WAN or thin networks.

* subversion/mod_dav_svn/reports/replay.c
  (struct edit_baton_t): Add new 'svndiff_version' field.
  (dav_svn__replay_report): Pass the negotiated svndiff version to ...
  (make_editor): ...this function that constructs an edit baton.
  (apply_textdelta): Use the negotiated svndiff version for deltas.

Modified:
    subversion/trunk/subversion/mod_dav_svn/reports/replay.c

Modified: subversion/trunk/subversion/mod_dav_svn/reports/replay.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/mod_dav_svn/reports/replay.c?rev=1791285&r1=1791284&r2=1791285&view=diff
==============================================================================
--- subversion/trunk/subversion/mod_dav_svn/reports/replay.c (original)
+++ subversion/trunk/subversion/mod_dav_svn/reports/replay.c Thu Apr 13 17:28:39 2017
@@ -48,6 +48,7 @@ typedef struct edit_baton_t {
   svn_boolean_t started;
   svn_boolean_t sending_textdelta;
   int compression_level;
+  int svndiff_version;
 } edit_baton_t;
 
 
@@ -326,7 +327,7 @@ apply_textdelta(void *file_baton,
                           dav_svn__make_base64_output_stream(eb->bb,
                                                              eb->output,
                                                              pool),
-                          0,
+                          eb->svndiff_version,
                           eb->compression_level,
                           pool);
 
@@ -369,6 +370,7 @@ make_editor(const svn_delta_editor_t **e
             apr_bucket_brigade *bb,
             dav_svn__output *output,
             int compression_level,
+            int svndiff_version,
             apr_pool_t *pool)
 {
   edit_baton_t *eb = apr_pcalloc(pool, sizeof(*eb));
@@ -379,6 +381,7 @@ make_editor(const svn_delta_editor_t **e
   eb->started = FALSE;
   eb->sending_textdelta = FALSE;
   eb->compression_level = compression_level;
+  eb->svndiff_version = svndiff_version;
 
   e->set_target_revision = set_target_revision;
   e->open_root = open_root;
@@ -544,6 +547,7 @@ dav_svn__replay_report(const dav_resourc
 
   make_editor(&editor, &edit_baton, bb, output,
               dav_svn__get_compression_level(resource->info->r),
+              resource->info->svndiff_version,
               resource->pool);
 
   if ((err = svn_repos_replay2(root, base_dir, low_water_mark,