You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2011/02/19 10:51:29 UTC
svn commit: r1072287 - in
/subversion/branches/integrate-compression-level/subversion:
libsvn_ra_neon/ mod_dav_svn/ mod_dav_svn/reports/
Author: stefan2
Date: Sat Feb 19 09:51:28 2011
New Revision: 1072287
URL: http://svn.apache.org/viewvc?rev=1072287&view=rev
Log:
Introduce SVNCompressionLevel mod_dav_svn parameter to make its
features symmetric to svnserve's. However, it seems that serf never
uses svndiff1 and compression is never done.
* subversion/mod_dav_svn/dav_svn.h
(dav_svn__get_compression_level): get the compression level setting
* subversion/mod_dav_svn/mod_dav_svn.c
(svn__compression_level): global compression level setting
(SVNCompressionLevel_cmd): process compression level config setting
(dav_svn__get_compression_level): implement
(cmds): declare SVNCompressionLevel config parameter
* subversion/libsvn_ra_neon/commit.c
(commit_apply_txdelta): use user-defined compression level
Modified:
subversion/branches/integrate-compression-level/subversion/libsvn_ra_neon/commit.c
subversion/branches/integrate-compression-level/subversion/mod_dav_svn/dav_svn.h
subversion/branches/integrate-compression-level/subversion/mod_dav_svn/mod_dav_svn.c
subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/file-revs.c
subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/replay.c
subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/update.c
subversion/branches/integrate-compression-level/subversion/mod_dav_svn/repos.c
Modified: subversion/branches/integrate-compression-level/subversion/libsvn_ra_neon/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/integrate-compression-level/subversion/libsvn_ra_neon/commit.c?rev=1072287&r1=1072286&r2=1072287&view=diff
==============================================================================
--- subversion/branches/integrate-compression-level/subversion/libsvn_ra_neon/commit.c (original)
+++ subversion/branches/integrate-compression-level/subversion/libsvn_ra_neon/commit.c Sat Feb 19 09:51:28 2011
@@ -1215,7 +1215,8 @@ commit_apply_txdelta(void *file_baton,
stream = svn_stream_create(baton, pool);
svn_stream_set_write(stream, commit_stream_write);
- svn_txdelta_to_svndiff2(handler, handler_baton, stream, 0, pool);
+ svn_txdelta_to_svndiff3(handler, handler_baton, stream, 0,
+ dav_svn__get_compression_level(), pool);
/* Add this path to the valid targets hash. */
add_valid_target(file->cc, file->rsrc->local_path, svn_nonrecursive);
Modified: subversion/branches/integrate-compression-level/subversion/mod_dav_svn/dav_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/integrate-compression-level/subversion/mod_dav_svn/dav_svn.h?rev=1072287&r1=1072286&r2=1072287&view=diff
==============================================================================
--- subversion/branches/integrate-compression-level/subversion/mod_dav_svn/dav_svn.h (original)
+++ subversion/branches/integrate-compression-level/subversion/mod_dav_svn/dav_svn.h Sat Feb 19 09:51:28 2011
@@ -370,6 +370,8 @@ const char *dav_svn__get_activities_db(r
/* ### Is this assumed to be URI-encoded? */
const char *dav_svn__get_root_dir(request_rec *r);
+/* Return the data compression level to be used over the wire. */
+int dav_svn__get_compression_level();
/** For HTTP protocol v2, these are the new URIs and URI stubs
returned to the client in our OPTIONS response. They all depend
Modified: subversion/branches/integrate-compression-level/subversion/mod_dav_svn/mod_dav_svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/integrate-compression-level/subversion/mod_dav_svn/mod_dav_svn.c?rev=1072287&r1=1072286&r2=1072287&view=diff
==============================================================================
--- subversion/branches/integrate-compression-level/subversion/mod_dav_svn/mod_dav_svn.c (original)
+++ subversion/branches/integrate-compression-level/subversion/mod_dav_svn/mod_dav_svn.c Sat Feb 19 09:51:28 2011
@@ -101,6 +101,10 @@ extern module AP_MODULE_DECLARE_DATA dav
/* The authz_svn provider for bypassing path authz. */
static authz_svn__subreq_bypass_func_t pathauthz_bypass_func = NULL;
+/* The compression level we will pass to svn_txdelta_to_svndiff3()
+ * for wire-compression */
+static int svn__compression_level = SVN_DEFAULT_COMPRESSSION_LEVEL;
+
static int
init(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
{
@@ -440,6 +444,32 @@ SVNInMemoryCacheSize_cmd(cmd_parms *cmd,
return NULL;
}
+static const char *
+SVNCompressionLevel_cmd(cmd_parms *cmd, void *config, const char *arg1)
+{
+ svn_fs_cache_config_t settings = *svn_fs_get_cache_config();
+
+ int value = 0;
+ svn_error_t *err = svn_cstring_atoi(&value, arg1);
+ if (err)
+ {
+ svn_error_clear(err);
+ return "Invalid decimal number for the SVN compression level.";
+ }
+
+ if ((value < SVN_NO_COMPRESSION_LEVEL) || (value > SVN_BEST_COMPRESSION_LEVEL))
+ return apr_psprintf(cmd->pool,
+ "%d is not a valid compression level. "
+ "The valid range is %d .. %d.",
+ value,
+ (int)SVN_NO_COMPRESSION_LEVEL,
+ (int)SVN_BEST_COMPRESSION_LEVEL);
+
+ svn__compression_level = value;
+
+ return NULL;
+}
+
/** Accessor functions for the module's configuration state **/
@@ -675,6 +705,12 @@ dav_svn__get_activities_db(request_rec *
}
+int
+dav_svn__get_compression_level()
+{
+ return svn__compression_level;
+}
+
static void
merge_xml_filter_insert(request_rec *r)
{
@@ -881,9 +917,15 @@ static const command_rec cmds[] =
/* per server */
AP_INIT_TAKE1("SVNInMemoryCacheSize", SVNInMemoryCacheSize_cmd, NULL,
RSRC_CONF,
- "specify the maximum size im MB per process of Subversion's "
+ "specifies the maximum size im MB per process of Subversion's "
"in-memory object cache (default value is 16; 0 deactivates "
"the cache)."),
+ /* per server */
+ AP_INIT_TAKE1("SVNCompressionLevel", SVNCompressionLevel_cmd, NULL,
+ RSRC_CONF,
+ "specifies the ZIP compression level used before sending file "
+ "content over the network (0 for no compression, 9 for best, "
+ "5 is default)."),
{ NULL }
};
Modified: subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/file-revs.c
URL: http://svn.apache.org/viewvc/subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/file-revs.c?rev=1072287&r1=1072286&r2=1072287&view=diff
==============================================================================
--- subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/file-revs.c (original)
+++ subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/file-revs.c Sat Feb 19 09:51:28 2011
@@ -206,8 +206,9 @@ file_rev_handler(void *baton,
base64_stream = dav_svn__make_base64_output_stream(frb->bb, frb->output,
pool);
- svn_txdelta_to_svndiff2(&frb->window_handler, &frb->window_baton,
- base64_stream, frb->svndiff_version, pool);
+ svn_txdelta_to_svndiff3(&frb->window_handler, &frb->window_baton,
+ base64_stream, frb->svndiff_version,
+ dav_svn__get_compression_level(), pool);
*window_handler = delta_window_handler;
*window_baton = frb;
/* Start the txdelta element wich will be terminated by the window
Modified: subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/replay.c
URL: http://svn.apache.org/viewvc/subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/replay.c?rev=1072287&r1=1072286&r2=1072287&view=diff
==============================================================================
--- subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/replay.c (original)
+++ subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/replay.c Sat Feb 19 09:51:28 2011
@@ -320,12 +320,13 @@ apply_textdelta(void *file_baton,
else
SVN_ERR(dav_svn__brigade_puts(eb->bb, eb->output, ">"));
- svn_txdelta_to_svndiff2(handler,
+ svn_txdelta_to_svndiff3(handler,
handler_baton,
dav_svn__make_base64_output_stream(eb->bb,
eb->output,
pool),
0,
+ dav_svn__get_compression_level(),
pool);
eb->sending_textdelta = TRUE;
Modified: subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/update.c?rev=1072287&r1=1072286&r2=1072287&view=diff
==============================================================================
--- subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/update.c (original)
+++ subversion/branches/integrate-compression-level/subversion/mod_dav_svn/reports/update.c Sat Feb 19 09:51:28 2011
@@ -779,9 +779,9 @@ upd_apply_textdelta(void *file_baton,
wb->uc->output,
file->pool);
- svn_txdelta_to_svndiff2(&(wb->handler), &(wb->handler_baton),
+ svn_txdelta_to_svndiff3(&(wb->handler), &(wb->handler_baton),
base64_stream, file->uc->svndiff_version,
- file->pool);
+ dav_svn__get_compression_level(), file->pool);
*handler = window_handler;
*handler_baton = wb;
Modified: subversion/branches/integrate-compression-level/subversion/mod_dav_svn/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/integrate-compression-level/subversion/mod_dav_svn/repos.c?rev=1072287&r1=1072286&r2=1072287&view=diff
==============================================================================
--- subversion/branches/integrate-compression-level/subversion/mod_dav_svn/repos.c (original)
+++ subversion/branches/integrate-compression-level/subversion/mod_dav_svn/repos.c Sat Feb 19 09:51:28 2011
@@ -3508,8 +3508,9 @@ deliver(const dav_resource *resource, ap
svn_stream_set_close(o_stream, close_filter);
/* get a handler/baton for writing into the output stream */
- svn_txdelta_to_svndiff2(&handler, &h_baton,
+ svn_txdelta_to_svndiff3(&handler, &h_baton,
o_stream, resource->info->svndiff_version,
+ dav_svn__get_compression_level(),
resource->pool);
/* got everything set up. read in delta windows and shove them into