Re: 1.7.8 up for testing/signing

2012-12-12 Thread Philip Herron
On 11/12/12 16:11, Peter Samuelson wrote:
 
 [Philip Martin]
 I assume WANdisco's package is intended to replace the libraries in the
 standard Debian or Ubuntu libsvn1 package, in which case you need to use
 the same patch.  If you ship -1.so.0 libraries then applications linked
 to the -1.so.1 libraries will fail to start.
 
 Well, they'll fail to start _if_ your package is actually named
 'libsvn1' and thus replaces the system libsvn1.  Calling a package
 'libsvn1' implies that you intend to ship libsvn_*-1.so.1.  And
 certainly the obvious course is to use my ABI patch, but if you'd
 rather stay truer to upstream Subversion, just name your library
 package something else (we called it libsvn0 before the patch) and the
 two packages can happily coexist on a system.  Apps compiled for the
 one will use the one, apps compiled for the other will use the other.
 
Which patch are you referring in paticular? I've tried a lot of patches
in some debian packages and they don't really work i've got all kinds of
errors sometimes only on 64bit not being able to find some svn change
path function isn't being compiled, and sometimes the patches dont
apply. And is it really that big a deal? Chaning it from 0 to 1. Abi
change etc, its still only a name of a library.

I have debian packages for and they work for us upgrading from the
default subversion system:

debian 5 32/64
debain 6 32/64
ubuntu 1004 32/64
ubuntu 1204 32/64

And i needed to repackages serf on ubuntu 1204 since it generates the
broken dependency of libserf-private which doesn't exist.

Maybe if i could see the single patch that refers to this i can apply it
or i can push to make a libsvn0 might be a good idea but that might
break git-svn or something since it depends libsvn1 maybe not since they
both can exist and libsvn1 will always be default systems libsvn.

On rhel 5/6 the libaries are left as is 0. Why isn't it a problem there.


Re: svn commit: r1420477 - in /subversion/trunk: build.conf subversion/tests/libsvn_ra/ subversion/tests/libsvn_ra/ra-test.c

2012-12-12 Thread Daniel Shahaf
julianf...@apache.org wrote on Tue, Dec 11, 2012 at 22:42:55 -:
 +[ra-test]
 +description = Test a few things in libsvn_ra
 +type = exe
 +path = subversion/tests/libsvn_ra
 +sources = ra-test.c
 +install = test
 +libs = libsvn_test libsvn_ra libsvn_fs libsvn_delta libsvn_subr
 +   apriconv apr neon

Neon?


Re: svn commit: r1420477 - in /subversion/trunk: build.conf subversion/tests/libsvn_ra/ subversion/tests/libsvn_ra/ra-test.c

2012-12-12 Thread Daniel Shahaf
Daniel Shahaf wrote on Wed, Dec 12, 2012 at 13:21:07 +0200:
 julianf...@apache.org wrote on Tue, Dec 11, 2012 at 22:42:55 -:
  +[ra-test]
  +description = Test a few things in libsvn_ra
  +type = exe
  +path = subversion/tests/libsvn_ra
  +sources = ra-test.c
  +install = test
  +libs = libsvn_test libsvn_ra libsvn_fs libsvn_delta libsvn_subr
  +   apriconv apr neon
 
 Neon?

Ignore me, it's been fixed already.


Re: svn commit: r1420404 - in /subversion/trunk/subversion/libsvn_wc: token-map.h wc-queries.sql

2012-12-12 Thread Philip Martin
Julian Foad julianf...@btopenworld.com writes:

 Author: philip

 
 URL: http://svn.apache.org/viewvc?rev=1420404view=rev
 Log:
 * subversion/libsvn_wc/token-map.h
   (depth_map): Add some annotations.
 
 * subversion/libsvn_wc/wc-queries.sql
   (STMT_HAS_SPARSE_NODES): Use annotations.

 Modified: subversion/trunk/subversion/libsvn_wc/token-map.h
 /* The subset of svn_depth_t used in the database. */
 static const svn_token_map_t depth_map[] = {
 -  { unknown, svn_depth_unknown },
 +  { unknown, svn_depth_unknown }, /* MAP_DEPTH_UNKNOWN */
    { empty, svn_depth_empty },
    { files, svn_depth_files },
    { immediates, svn_depth_immediates },
 -  { infinity, svn_depth_infinity },
 +  { infinity, svn_depth_infinity }, /* MAP_DEPTH_INFINITY */

 Might as well just annotate all the values at once, no?

Perhaps, but I decided to avoid adding things that would be unused.
It's simple enough to add them when needed.

-- 
Certified  Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download


Re: 1.7.8 up for testing/signing

2012-12-12 Thread Philip Martin
Philip Herron philip.her...@wandisco.com writes:

 Which patch are you referring in paticular?

subversion-1.7.5/debian/patches/apr-abi1
subversion-1.7.5/debian/patches/apr-abi2

Index: configure.ac
===
--- configure.ac(revision 1420608)
+++ configure.ac(working copy)
@@ -99,19 +99,26 @@
 if test `expr $apr_version : 2` -ne 0; then
   dnl Bump the library so-version to 2 if using APR-2
   dnl (Debian uses so-version 1 for APR-1-with-largefile)
-  SVN_LT_SOVERSION=-version-info 2
+  svn_lib_ver=2
   dnl APR-2 provides APRUTIL
   apu_config=$apr_config
   AC_SUBST(SVN_APRUTIL_INCLUDES)
   AC_SUBST(SVN_APRUTIL_CONFIG, [$apu_config])
   AC_SUBST(SVN_APRUTIL_LIBS)
   AC_SUBST(SVN_APRUTIL_PREFIX)
+elif test `expr $apr_version : 1` -ne 0; then
+  svn_lib_ver=1
+  APU_VER_REGEXES=[1\.]
+  SVN_LIB_APRUTIL($APU_VER_REGEXES)
 else
-  SVN_LT_SOVERSION=-version-info 0
-  APU_VER_REGEXES=[0\.9\.[7-9] 0\.9\.1[0-9] 1\.]
+  svn_lib_ver=0
+  APU_VER_REGEXES=[0\.9\.[7-9] 0\.9\.1[0-9]]
   SVN_LIB_APRUTIL($APU_VER_REGEXES)
 fi
+SVN_LT_SOVERSION=-version-info $svn_lib_ver
 AC_SUBST(SVN_LT_SOVERSION)
+AC_DEFINE_UNQUOTED(SVN_SOVERSION, $svn_lib_ver,
+   [Subversion library major verson])
 
 dnl Search for pkg-config
 AC_PATH_PROG(PKG_CONFIG, pkg-config)
Index: subversion/libsvn_fs/fs-loader.c
===
--- subversion/libsvn_fs/fs-loader.c(revision 1420608)
+++ subversion/libsvn_fs/fs-loader.c(working copy)
@@ -100,8 +100,8 @@
 const char *funcname;
 apr_status_t status;
 
-libname = apr_psprintf(pool, libsvn_fs_%s-%d.so.0,
-   name, SVN_VER_MAJOR);
+libname = apr_psprintf(pool, libsvn_fs_%s-%d.so.%d,
+   name, SVN_VER_MAJOR, SVN_SOVERSION);
 funcname = apr_psprintf(pool, svn_fs_%s__init, name);
 
 /* Find/load the specified library.  If we get an error, assume
Index: subversion/libsvn_ra/ra_loader.c
===
--- subversion/libsvn_ra/ra_loader.c(revision 1420608)
+++ subversion/libsvn_ra/ra_loader.c(working copy)
@@ -159,8 +159,8 @@
 const char *compat_funcname;
 apr_status_t status;
 
-libname = apr_psprintf(pool, libsvn_ra_%s-%d.so.0,
-   ra_name, SVN_VER_MAJOR);
+libname = apr_psprintf(pool, libsvn_ra_%s-%d.so.%d,
+   ra_name, SVN_VER_MAJOR, SVN_SOVERSION);
 funcname = apr_psprintf(pool, svn_ra_%s__init, ra_name);
 compat_funcname = apr_psprintf(pool, svn_ra_%s_init, ra_name);
 
Index: subversion/libsvn_subr/auth.c
===
--- subversion/libsvn_subr/auth.c   (revision 1420608)
+++ subversion/libsvn_subr/auth.c   (working copy)
@@ -399,9 +399,9 @@
   const char *library_label, *library_name;
   const char *provider_function_name, *version_function_name;
   library_name = apr_psprintf(pool,
-  libsvn_auth_%s-%d.so.0,
+  libsvn_auth_%s-%d.so.%d,
   provider_name,
-  SVN_VER_MAJOR);
+  SVN_VER_MAJOR, SVN_SOVERSION);
   library_label = apr_psprintf(pool, svn_%s, provider_name);
   provider_function_name = apr_psprintf(pool,
 svn_auth_get_%s_%s_provider,

-- 
Certified  Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download


Re: svn commit: r1417926 - in /subversion/trunk/subversion/libsvn_wc: externals.c merge.c props.c props.h update_editor.c

2012-12-12 Thread Philip Martin
julianf...@apache.org writes:

 Author: julianfoad
 Date: Thu Dec  6 14:58:31 2012
 New Revision: 1417926

 URL: http://svn.apache.org/viewvc?rev=1417926view=rev
 Log:
 Remove the 'base_merge' parameter from svn_wc__merge_props(), instead
 doing a 'base merge' iff the 'new_pristine_props' output parameter is given,
 for simplicity.

 --- subversion/trunk/subversion/libsvn_wc/props.c (original)
 +++ subversion/trunk/subversion/libsvn_wc/props.c Thu Dec  6 14:58:31 2012
 @@ -294,12 +294,13 @@ svn_wc__perform_props_merge(svn_wc_notif
/* Note that while this routine does the real work, it's only
   prepping tempfiles and writing log commands.  */
SVN_ERR(svn_wc__merge_props(conflict_skel, state,
 -  new_pristine_props, new_actual_props,
 +  base_merge ? new_pristine_props : NULL,
 +  new_actual_props,

I think this change is causing this error:

W: ==32246== Conditional jump or move depends on uninitialised value(s)
W: ==32246==at 0x510A7F4: svn_wc__perform_props_merge (props.c:340)
W: ==32246==by 0x510AA4C: svn_wc_merge_props3 (props.c:392)
W: ==32246==by 0x4E73748: merge_dir_props_changed (merge.c:1445)
W: ==32246==by 0x4E9B7C5: close_directory (repos_diff.c:1120)
W: ==32246==by 0x559EB6D: close_directory (cancel.c:261)
W: ==32246==by 0x559EB6D: close_directory (cancel.c:261)
W: ==32246==by 0x688FA75: drive (reporter.c:1395)
W: ==32246==by 0x688FD9F: finish_report (reporter.c:1451)
W: ==32246==by 0x68901C6: svn_repos_finish_report (reporter.c:1543)
W: ==32246==by 0x665FEA8: reporter_finish_report (ra_plugin.c:251)
W: ==32246==by 0x4E7ACFF: drive_merge_report_editor (merge.c:5320)
W: ==32246==by 0x4E81570: do_mergeinfo_aware_dir_merge (merge.c:8901)

which is causing the ubuntu buildbot to fail:

svn: E235000: In file 'subversion/libsvn_wc/props.c' line 341: assertion failed 
(new_pristine_props != NULL  new_actual_props != NULL)

-- 
Certified  Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download


mod_dav_svn assert on root location

2012-12-12 Thread Erez Zarum
I am trying to create a master slave configuration with proxy requests
through the slave, i have used this configuration on the slave:
Location /
DAV svn
SVNPath /scratch/repo

SVNMasterURIhttp://master.server.com/svn;
...
/Location

In 1.7.7 the SVNMasterURI won't let me use http://master.server.com/
in 1.6.19 it will.
But when i use Location / i get the following assert in the apache
error_log (the main log): httpd: subversion/mod_dav_svn/mirror.c:47:
proxy_request_fixup: Assertion `(uri_segment[0] == '\0') ||
(uri_segment[0] == '/')' failed.
If i use Location /url then everything works as expected.

Thanks,
 Erez


Re: mod_dav_svn assert on root location

2012-12-12 Thread Daniel Shahaf
Erez Zarum wrote on Wed, Dec 12, 2012 at 15:33:08 +0200:
 I am trying to create a master slave configuration with proxy requests
 through the slave, i have used this configuration on the slave:
 Location /
 DAV svn
 SVNPath /scratch/repo
 
 SVNMasterURIhttp://master.server.com/svn;
 ...
 /Location
 
 In 1.7.7 the SVNMasterURI won't let me use http://master.server.com/
 in 1.6.19 it will.
 But when i use Location / i get the following assert in the apache
 error_log (the main log): httpd: subversion/mod_dav_svn/mirror.c:47:
 proxy_request_fixup: Assertion `(uri_segment[0] == '\0') ||
 (uri_segment[0] == '/')' failed.
 If i use Location /url then everything works as expected.
 
 Thanks,
  Erez

Hi :) 

Thanks for the due diligent report on IRC, it was helpful.

This should at least fix the assertion (compiled, but untested):

[[[
Index: subversion/mod_dav_svn/mirror.c
===
--- subversion/mod_dav_svn/mirror.c (revision 1420650)
+++ subversion/mod_dav_svn/mirror.c (working copy)
@@ -39,12 +39,17 @@
URI_SEGMENT is the URI bits relative to the repository root (but if
non-empty, *does* have a leading slash delimiter).
MASTER_URI and URI_SEGMENT are not URI-encoded. */
-static void proxy_request_fixup(request_rec *r,
-const char *master_uri,
-const char *uri_segment)
+static int proxy_request_fixup(request_rec *r,
+   const char *master_uri,
+   const char *uri_segment)
 {
-assert((uri_segment[0] == '\0')
-   || (uri_segment[0] == '/'));
+if (uri_segment[0] != '\0'  uri_segment[0] != '/')
+  {
+ap_log_rerror(APLOG_MARK, APLOG_ERR, SVN_ERR_BAD_CONFIG_VALUE, r,
+ Invalid URI segment '%s' in slave fixup,
+  uri_segment);
+return HTTP_INTERNAL_SERVER_ERROR;
+  }
 
 r-proxyreq = PROXYREQ_REVERSE;
 r-uri = r-unparsed_uri;
@@ -67,6 +72,7 @@
 ap_add_output_filter(LocationRewrite, NULL, r, r-connection);
 ap_add_output_filter(ReposRewrite, NULL, r, r-connection);
 ap_add_input_filter(IncomingRewrite, NULL, r, r-connection);
+return OK;
 }
 
 
@@ -101,8 +107,10 @@ int dav_svn__proxy_request_fixup(request_rec *r)
 /txn/, (char *)NULL))
 || ap_strstr_c(seg, apr_pstrcat(r-pool, special_uri,
 /txr/, (char *)NULL))) {
+int rv;
 seg += strlen(root_dir);
-proxy_request_fixup(r, master_uri, seg);
+rv = proxy_request_fixup(r, master_uri, seg);
+if (rv) return rv;
 }
 }
 return OK;
@@ -116,8 +124,10 @@ int dav_svn__proxy_request_fixup(request_rec *r)
 r-method_number == M_LOCK ||
 r-method_number == M_UNLOCK ||
 ap_strstr_c(seg, special_uri))) {
+int rv;
 seg += strlen(root_dir);
-proxy_request_fixup(r, master_uri, seg);
+rv = proxy_request_fixup(r, master_uri, seg);
+if (rv) return rv;
 return OK;
 }
 }
]]]

I think the actual problem is that root_dir is /, so after skipping
strlen(root_dir) bytes the result doesn't start with a slash.  We could
fix that by using svn_uri__skip_ancestor()... but we already don't allow
SVNMasterURI to be a http://host:port/ URL (i.e., lacking /path
componets after the root), so maybe we shouldn't bother to try
supporting root_dir == / here.

Thoughts?

Daniel


Re: mod_dav_svn assert on root location

2012-12-12 Thread Philip Martin
Erez Zarum erezza...@gmail.com writes:

 I am trying to create a master slave configuration with proxy requests
 through the slave, i have used this configuration on the slave:
 Location /
 DAV svn
 SVNPath /scratch/repo
 
 SVNMasterURIhttp://master.server.com/svn;
 ...
 /Location

 In 1.7.7 the SVNMasterURI won't let me use http://master.server.com/
 in 1.6.19 it will.

That was a deliberate change in r1064734. I'm not sure what went wrong
with that setup but the log message is:

  Disallow attempts to proxy to the server root of a master server.  It
  really just doesn't pan out well when you do.

 But when i use Location / i get the following assert in the apache
 error_log (the main log): httpd: subversion/mod_dav_svn/mirror.c:47:
 proxy_request_fixup: Assertion `(uri_segment[0] == '\0') ||
 (uri_segment[0] == '/')' failed.
 If i use Location /url then everything works as expected.

I've raised
http://subversion.tigris.org/issues/show_bug.cgi?id=4272
for the assert.

-- 
Certified  Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download


Re: mod_dav_svn assert on root location

2012-12-12 Thread Erez Zarum
I have recompiled with the patch,
When trying to commit to the slave, the client receive:
Commit failed (details follow):
Server sent unexpected return value (500 Internal Server Error) in response to
MKACTIVITY request for '/!svn/act/12aad366-69cf-2b48-9303-bfb1220af919'

And now the error is logged in the VirtualHost error log (as defined)
instead of the main apache error log.
[Wed Dec 12 16:47:33 2012] [error] [client 10.0.2.15] (125009)APR does
not understand this error code: Invalid URI segment
'!svn/act/779db2c6-6390-e147-a8be-cc8434b0919f' in slave fixup

As i understand it will be best to switch from using root dir to
something like /svn.

Thanks for your help.


On Wed, Dec 12, 2012 at 3:55 PM, Daniel Shahaf danie...@elego.de wrote:
 Erez Zarum wrote on Wed, Dec 12, 2012 at 15:33:08 +0200:
 I am trying to create a master slave configuration with proxy requests
 through the slave, i have used this configuration on the slave:
 Location /
 DAV svn
 SVNPath /scratch/repo
 
 SVNMasterURIhttp://master.server.com/svn;
 ...
 /Location

 In 1.7.7 the SVNMasterURI won't let me use http://master.server.com/
 in 1.6.19 it will.
 But when i use Location / i get the following assert in the apache
 error_log (the main log): httpd: subversion/mod_dav_svn/mirror.c:47:
 proxy_request_fixup: Assertion `(uri_segment[0] == '\0') ||
 (uri_segment[0] == '/')' failed.
 If i use Location /url then everything works as expected.

 Thanks,
  Erez

 Hi :)

 Thanks for the due diligent report on IRC, it was helpful.

 This should at least fix the assertion (compiled, but untested):

 [[[
 Index: subversion/mod_dav_svn/mirror.c
 ===
 --- subversion/mod_dav_svn/mirror.c (revision 1420650)
 +++ subversion/mod_dav_svn/mirror.c (working copy)
 @@ -39,12 +39,17 @@
 URI_SEGMENT is the URI bits relative to the repository root (but if
 non-empty, *does* have a leading slash delimiter).
 MASTER_URI and URI_SEGMENT are not URI-encoded. */
 -static void proxy_request_fixup(request_rec *r,
 -const char *master_uri,
 -const char *uri_segment)
 +static int proxy_request_fixup(request_rec *r,
 +   const char *master_uri,
 +   const char *uri_segment)
  {
 -assert((uri_segment[0] == '\0')
 -   || (uri_segment[0] == '/'));
 +if (uri_segment[0] != '\0'  uri_segment[0] != '/')
 +  {
 +ap_log_rerror(APLOG_MARK, APLOG_ERR, SVN_ERR_BAD_CONFIG_VALUE, r,
 + Invalid URI segment '%s' in slave fixup,
 +  uri_segment);
 +return HTTP_INTERNAL_SERVER_ERROR;
 +  }

  r-proxyreq = PROXYREQ_REVERSE;
  r-uri = r-unparsed_uri;
 @@ -67,6 +72,7 @@
  ap_add_output_filter(LocationRewrite, NULL, r, r-connection);
  ap_add_output_filter(ReposRewrite, NULL, r, r-connection);
  ap_add_input_filter(IncomingRewrite, NULL, r, r-connection);
 +return OK;
  }


 @@ -101,8 +107,10 @@ int dav_svn__proxy_request_fixup(request_rec *r)
  /txn/, (char *)NULL))
  || ap_strstr_c(seg, apr_pstrcat(r-pool, special_uri,
  /txr/, (char *)NULL))) 
 {
 +int rv;
  seg += strlen(root_dir);
 -proxy_request_fixup(r, master_uri, seg);
 +rv = proxy_request_fixup(r, master_uri, seg);
 +if (rv) return rv;
  }
  }
  return OK;
 @@ -116,8 +124,10 @@ int dav_svn__proxy_request_fixup(request_rec *r)
  r-method_number == M_LOCK ||
  r-method_number == M_UNLOCK ||
  ap_strstr_c(seg, special_uri))) {
 +int rv;
  seg += strlen(root_dir);
 -proxy_request_fixup(r, master_uri, seg);
 +rv = proxy_request_fixup(r, master_uri, seg);
 +if (rv) return rv;
  return OK;
  }
  }
 ]]]

 I think the actual problem is that root_dir is /, so after skipping
 strlen(root_dir) bytes the result doesn't start with a slash.  We could
 fix that by using svn_uri__skip_ancestor()... but we already don't allow
 SVNMasterURI to be a http://host:port/ URL (i.e., lacking /path
 componets after the root), so maybe we shouldn't bother to try
 supporting root_dir == / here.

 Thoughts?

 Daniel


Re: 1.7.8 up for testing/signing

2012-12-12 Thread Philip Herron
Ok cool never seen these ones there was probably a much older one i was
looking at where can i download these ones?

--Phil

On 12/12/12 11:56, Philip Martin wrote:
 Philip Herron philip.her...@wandisco.com writes:
 
 Which patch are you referring in paticular?
 
 subversion-1.7.5/debian/patches/apr-abi1
 subversion-1.7.5/debian/patches/apr-abi2
 
 Index: configure.ac
 ===
 --- configure.ac  (revision 1420608)
 +++ configure.ac  (working copy)
 @@ -99,19 +99,26 @@
  if test `expr $apr_version : 2` -ne 0; then
dnl Bump the library so-version to 2 if using APR-2
dnl (Debian uses so-version 1 for APR-1-with-largefile)
 -  SVN_LT_SOVERSION=-version-info 2
 +  svn_lib_ver=2
dnl APR-2 provides APRUTIL
apu_config=$apr_config
AC_SUBST(SVN_APRUTIL_INCLUDES)
AC_SUBST(SVN_APRUTIL_CONFIG, [$apu_config])
AC_SUBST(SVN_APRUTIL_LIBS)
AC_SUBST(SVN_APRUTIL_PREFIX)
 +elif test `expr $apr_version : 1` -ne 0; then
 +  svn_lib_ver=1
 +  APU_VER_REGEXES=[1\.]
 +  SVN_LIB_APRUTIL($APU_VER_REGEXES)
  else
 -  SVN_LT_SOVERSION=-version-info 0
 -  APU_VER_REGEXES=[0\.9\.[7-9] 0\.9\.1[0-9] 1\.]
 +  svn_lib_ver=0
 +  APU_VER_REGEXES=[0\.9\.[7-9] 0\.9\.1[0-9]]
SVN_LIB_APRUTIL($APU_VER_REGEXES)
  fi
 +SVN_LT_SOVERSION=-version-info $svn_lib_ver
  AC_SUBST(SVN_LT_SOVERSION)
 +AC_DEFINE_UNQUOTED(SVN_SOVERSION, $svn_lib_ver,
 +   [Subversion library major verson])
  
  dnl Search for pkg-config
  AC_PATH_PROG(PKG_CONFIG, pkg-config)
 Index: subversion/libsvn_fs/fs-loader.c
 ===
 --- subversion/libsvn_fs/fs-loader.c  (revision 1420608)
 +++ subversion/libsvn_fs/fs-loader.c  (working copy)
 @@ -100,8 +100,8 @@
  const char *funcname;
  apr_status_t status;
  
 -libname = apr_psprintf(pool, libsvn_fs_%s-%d.so.0,
 -   name, SVN_VER_MAJOR);
 +libname = apr_psprintf(pool, libsvn_fs_%s-%d.so.%d,
 +   name, SVN_VER_MAJOR, SVN_SOVERSION);
  funcname = apr_psprintf(pool, svn_fs_%s__init, name);
  
  /* Find/load the specified library.  If we get an error, assume
 Index: subversion/libsvn_ra/ra_loader.c
 ===
 --- subversion/libsvn_ra/ra_loader.c  (revision 1420608)
 +++ subversion/libsvn_ra/ra_loader.c  (working copy)
 @@ -159,8 +159,8 @@
  const char *compat_funcname;
  apr_status_t status;
  
 -libname = apr_psprintf(pool, libsvn_ra_%s-%d.so.0,
 -   ra_name, SVN_VER_MAJOR);
 +libname = apr_psprintf(pool, libsvn_ra_%s-%d.so.%d,
 +   ra_name, SVN_VER_MAJOR, SVN_SOVERSION);
  funcname = apr_psprintf(pool, svn_ra_%s__init, ra_name);
  compat_funcname = apr_psprintf(pool, svn_ra_%s_init, ra_name);
  
 Index: subversion/libsvn_subr/auth.c
 ===
 --- subversion/libsvn_subr/auth.c (revision 1420608)
 +++ subversion/libsvn_subr/auth.c (working copy)
 @@ -399,9 +399,9 @@
const char *library_label, *library_name;
const char *provider_function_name, *version_function_name;
library_name = apr_psprintf(pool,
 -  libsvn_auth_%s-%d.so.0,
 +  libsvn_auth_%s-%d.so.%d,
provider_name,
 -  SVN_VER_MAJOR);
 +  SVN_VER_MAJOR, SVN_SOVERSION);
library_label = apr_psprintf(pool, svn_%s, provider_name);
provider_function_name = apr_psprintf(pool,
  svn_auth_get_%s_%s_provider,
 



Re: 1.7.8 up for testing/signing

2012-12-12 Thread Philip Martin
Philip Herron philip.her...@wandisco.com writes:

 Ok cool never seen these ones there was probably a much older one i was
 looking at where can i download these ones?

http://anonscm.debian.org/viewvc/pkg-subversion/src/1.7.x/debian/patches/

-- 
Certified  Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download


Re: 1.7.8 up for testing/signing

2012-12-12 Thread Peter Samuelson

 http://anonscm.debian.org/viewvc/pkg-subversion/src/1.7.x/debian/patches/

(Or svn://anonscm.debian.org/pkg-subversion/src/1.7.x/debian/patches .)


[PATCH] Prevent false negative results of make check in Python tests

2012-12-12 Thread Andreas Stieger
Hello,

discussed on IRC, the patch below changes the test harness to prevent
some false negatives when running the test suite. Specifically, if a
python test initialisation returns in such a way that the test runner
doesn't know how to handle the result, change to code to return a
non-zero exit code like and, subsequently, have make check fail
correctly. Reproducible by using Python  2.5 or missing sqlite3 Python
bindings, exit triggered by
subversion/tests/cmdline/svntest/__init__.py. danielsh,breser hinted +1
for this on IRC.

[[[
Prevent false negative results of make check in Python tests

* build/run_tests.py
  (_run_py_test): exit non-zero like _run_c_test
]]]

With kind regards,
Andreas Stieger
Index: build/run_tests.py
===
--- build/run_tests.py	(revision 1420930)
+++ build/run_tests.py	(working copy)
@@ -434,7 +434,7 @@ class TestHarness:
  ('.py', 'U', imp.PY_SOURCE))
 except:
   print(Don't know what to do about  + progbase)
-  raise
+  sys.exit(1)
 
 import svntest.main
 


Re: svn commit: r1417639 - in /subversion/trunk/subversion/mod_dav_svn: dav_svn.h mod_dav_svn.c reports/update.c

2012-12-12 Thread Lieven Govaerts
On Tue, Dec 11, 2012 at 9:29 PM, C. Michael Pilato cmpil...@collab.net wrote:
 On 12/10/2012 10:53 AM, C. Michael Pilato wrote:
 What if we revved the svn_ra_replay_range() API in such a way that it could
 now handle this initial revision scenario?  We might add an 'incremental'
 flag that parallels what 'svnadmin dump' and 'svnrdump dump' do.  This would
 get us to a single RA API used for revision replays (replay_range, instead
 of a combination of do_update + replay_range), which simplifies how replays
 are done from an API perspective.  Of course, under the hood, the RA
 implementations of the new replay_range2() would probably just use the same
 update mechanics to handle that initial revision when not in incremental
 mode, but ra_serf's particular implementation would be free to choose
 send-all mode in this one scenario to do exactly that.

 Well, this turns out to be a little more sticky than I'd hoped.

 It's easy enough to add a send_complete_start_revision flag to
 svn_ra_replay_range() which causes the first transmitted revision to be a
 full dump of the tree as of that revision.  But the svn_ra_replay_range()
 API also allows folks to specific whether they want *real* content change
 information, or just placeholder notifications for modified file content and
 node properties.  Seems kinda yucky to transmit a full tree snapshot when
 the caller has asked not to get any real content mods; and we don't have a
 readily available way to send a full tree snapshot sans real content.

 Those technical challenges aside, I've since started to doubt the wisdom of
 adding special treatment of the starting revision to this API anyway.  I'll
 continue pondering other options.


What about my earlier suggestion?

On Thu, Dec 6, 2012 at 11:04 PM, Mark Phippard markp...@gmail.com wrote:
 Is there an easy way to make svnrdump always use sendall mode?  That
 would remove the release blocker we have about this command not
 working correctly with Serf and it seems like something we ought to be
 able to implement independent of these other questions.


 A bit of a hack, but after the config is read from file/registry and
 before svnrdump creates the ra_session we can set the global or per
 server-group bulk-updates option in memory to true.
 Is this for dump only?

 AFAIK, it is only dump where the svnrdump tool fails when using Serf.
 Because of the Ev1 stuff.  Using bulk-updates ought to avoid that
 issue.

Actually, my proposed hack of forcing ra_serf to use bulk update mode
is not going to work. If the server has SVNAllowBulkUpdates set to
Off, bulk update mode isn't available, the server will ignore any
requests from the client and force skelta mode.

If I remember correctly the issue here was responses arriving out of
order due to multiple parallel connections. So the fix until svnrdump
has moved to Ev2 is to stick to one extra connection for all the file
content requests, so all of those responses arrive in sync.
Don't know how easy that is to do, I wonder if we have a simple
mechanism that allows a client to pass ra implementation specific
options.


It'd still require an ra API change, like
guarantee_depth_first_order(), which ra_serf will use to limit the nr.
of connections to 1, and probably only svnrdump will every use.

 --
 C. Michael Pilato cmpil...@collab.net
 CollabNet  www.collab.net  Enterprise Cloud Development


Lieven


Re: [PATCH] Prevent false negative results of make check in Python tests

2012-12-12 Thread Daniel Shahaf
Andreas Stieger wrote on Wed, Dec 12, 2012 at 20:01:11 +:
 Hello,
 
 discussed on IRC, the patch below changes the test harness to prevent
 some false negatives when running the test suite. Specifically, if a
 python test initialisation returns in such a way that the test runner
 doesn't know how to handle the result, change to code to return a
 non-zero exit code like and, subsequently, have make check fail
 correctly. Reproducible by using Python  2.5 or missing sqlite3 Python
 bindings, exit triggered by
 subversion/tests/cmdline/svntest/__init__.py. danielsh,breser hinted +1
 for this on IRC.

Go ahead and commit.  It's an error path that no one should be running
into; you run into it, and you have 2 +1's, so it's a no brainer. If
anyone have issues I trust they'll do a post-commit review.

 
 [[[
 Prevent false negative results of make check in Python tests
 
 * build/run_tests.py
   (_run_py_test): exit non-zero like _run_c_test
 ]]]
 
 With kind regards,
 Andreas Stieger

 Index: build/run_tests.py
 ===
 --- build/run_tests.py(revision 1420930)
 +++ build/run_tests.py(working copy)
 @@ -434,7 +434,7 @@ class TestHarness:
   ('.py', 'U', imp.PY_SOURCE))
  except:
print(Don't know what to do about  + progbase)
 -  raise
 +  sys.exit(1)
  
  import svntest.main
  



Re: 1.7.8 up for testing/signing

2012-12-12 Thread Paul Burba
On Mon, Dec 10, 2012 at 10:03 PM, Paul Burba ptbu...@gmail.com wrote:
 On Mon, Dec 10, 2012 at 5:07 PM, Ben Reser b...@reser.org wrote:
 The 1.7.8 release artifacts are now available for testing/signing.
 Please get the tarballs from
   https://dist.apache.org/repos/dist/dev/subversion
 and add your signatures there.

 Thanks!

 SUMMARY:
 -
 +1 to release

 VERIFIED:
 -
 Other than the expected differences in
 subversion/include/svn_version.h,
 https://dist.apache.org/repos/dist/dev/subversion/subversion-1.7.8.zip
 is identical to
 https://svn.apache.org/repos/asf/subversion/branches/1.7.x@1419691.

 SHA1 checksum of
 https://dist.apache.org/repos/dist/dev/subversion/subversion-1.7.8.zip
 is 65985725f8138cc18993a9088d4ad70df6c0d816

 TESTED:
 ---
 [Release-Build] x[ fsfs | bdb ] x [ file | svn | http (neon) | http (serf) ]
 Ruby bindings (patched as described here:
 http://svn.haxx.se/dev/archive-2011-06/0682.shtml)
 JavaHL Bindings

 RESULTS:
 
 All Tests Pass

 PLATFORM:
 -
 MS Windows 7 Home Premium Service Pack 1
 Microsoft Visual Studio 2008 Version 9.0.30729.1 SP

 DEPENDENCIES:
 -
 APR: 1.4.6
 APR-UTIL: 1.4.1
 Neon: 0.29.5
 zlib: 1.2.4
 OpenSSL: 0.9.8q
 Apache: 2.2.22
 BDB: 4.8.30
 sqlite: 3.7.7.1
 Python: 2.7.2 (ActivePython 2.7.2.5)
 Perl: 5.14.2
 Ruby: ruby 1.8.7
 java: 1.6.0_21
 junit: 4.8.2
 swig: 1.3.40
 serf: 1.1.1

 SIGNATURE:
 --
 https://dist.apache.org/repos/dist/dev/subversion/subversion-1.7.8.zip:

 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.5 (MingW32)

 iD8DBQBQxnLZ2RaJMFP83FURAhdgAJ4uhjXgujUQK5MCObZWanCv0y06dgCfcip4
 9wYkft1k86LMlDaXYBRZfvk=
 =EbgM
 -END PGP SIGNATURE-

Hi Ben,

Not until after I signed this did I recall your note about migrating
off of sha1 based keys --
http://svn.haxx.se/dev/archive-2012-10/0073.shtml

Here's my sig using my new[1] 4069 bit RSA key (I updated
subversion-1.7.8.zip.asc as well):

-BEGIN PGP SIGNATURE-
Version: GnuPG v2.0.17 (MingW32)

iQIcBAABCgAGBQJQyOCjAAoJEGTdwHFW89e8CPcQAJpAIFDDNudie0SwBvaVgBTJ
BAX+SWGxAX8uHw1YTGUlTBqtfjy9K1e6tYF3HfOA/8OVzPaVLo+w6KBOQvblGvoy
0XqCel/QEtFtxLnr0O2WRQVQlIis05hTZNPbti7nYg4CPfAKfVQHTJGFwABw9n6u
hUD4guSnaKJEFE0YXO4Ze8ypb9n7ByB10oFEntg5M8F7khnMccv/h+LDAjfFGiJk
nXLcZflm9at9ZKaTg2DNeYHANXVz37sYvzKSdprA/JJsMu62pBZRoUYxsUQlS3CJ
fGqzpqYViN3pZaEZ0xKk5IQS1/inHKn5dJOmZrBQ+8Y5Homy0S8dVEWKx4XOJBYM
PfjNo95yr0vb8BT/ZesGVePl44j8KCXgFnFUcC7z3F6/iMn9+NTF+PuLlEBvFU5c
aEmgFWavDq5X97GGsir0/lN4jQwBCjDLJw+l11252HRGyqpEBx78OT0we9cvYWEm
ic3WLYricNfGVoJcp//i0OBtT2Ay0A/wCBrgCT6zUo9ZkwV6+94sKiq8y9PTQ37f
cmU/ZijP54xevUXX4vkzUxpolZao3ZiWpWUBaLf45MIVU2nDlf2HLs74TH7IMLZP
0o56klr7t7MHZHf2kfwhtNqZ0SMLNrdTU7G7OjpGTi/C33uy9eWgRvX20NZTvJmu
wWjxtQXUR8U4NqeQBsmI
=A/dt
-END PGP SIGNATURE-

[1] Key ID: 56F3D7BC
Fingerprint: 1A0F E7C6 B3C5 F8D4 D0C4  A20B 64DD C071 56F3 D7BC

-- 
Paul T. Burba
CollabNet, Inc. -- www.collab.net -- Enterprise Cloud Development
Skype: ptburba


Re: 1.7.8 up for testing/signing

2012-12-12 Thread C. Michael Pilato
On 12/10/2012 05:07 PM, Ben Reser wrote:
 The 1.7.8 release artifacts are now available for testing/signing.
 Please get the tarballs from
   https://dist.apache.org/repos/dist/dev/subversion
 and add your signatures there.

Summary:

   +1 to release.

Platform:

   Linux 3.2.0-34-generic-pae
   Ubuntu 12.04.1 (precise) Linux (x86)
   Python 2.7.3
   Perl 5.14.2
   Ruby 1.8.7
   Java 1.6.0_24

Verified:

   I tested the following (with pre-installed dependencies):

  ((svn, neon, serf, local) x (fsfs, bdb))
 + swig-py + javahl + swig-rb + ctypes-python

SHA1 Checksums:

   1e298368cc2a73337eaaf192510afa5e88a097c8  subversion-1.7.8.tar.gz
   12c7d8d5414bba74c9777c4d1dae74f152df63c2  subversion-1.7.8.tar.bz2

GPG Signatures

::: subversion-1.7.8.tar.gz :::
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)

iEYEABECAAYFAlDItF8ACgkQokEGqRcG/W5dmgCgyWcd02yhR/EQTsaavwlxDaxY
UQAAoJuPpOAbZZat8SnzpZ+bcIZhedqy
=9rdE
-END PGP SIGNATURE-

::: subversion-1.7.8.tar.bz2 :::
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)

iEYEABECAAYFAlDItF8ACgkQokEGqRcG/W4SkwCfahh6DQkFNIPaIp91jNG3lBRb
tyYAnR/Bj/3CqVLdDgFUQ0DtIqBdJzSW
=zBoS
-END PGP SIGNATURE-


-- 
C. Michael Pilato cmpil...@collab.net
CollabNet  www.collab.net  Enterprise Cloud Development



signature.asc
Description: OpenPGP digital signature


Re: svn commit: r1417639 - in /subversion/trunk/subversion/mod_dav_svn: dav_svn.h mod_dav_svn.c reports/update.c

2012-12-12 Thread C. Michael Pilato
On 12/12/2012 03:02 PM, Lieven Govaerts wrote:
 On Tue, Dec 11, 2012 at 9:29 PM, C. Michael Pilato cmpil...@collab.net 
 wrote:
 Those technical challenges aside, I've since started to doubt the wisdom of
 adding special treatment of the starting revision to this API anyway.  I'll
 continue pondering other options.

 
 What about my earlier suggestion?

I considered it.

And ... then I considered it a nasty hack.  Seriously, this is really not
the kind of thing that *should* be exposed through an API.

   ...
   svn_boolean_t honor_editor_api_promises;
   ...

Really?  :-)

It does occur to me that one way to work around this is to add an API that
seems generally useful:

  svn_ra_do_checkout()

This would be Yet Another Flavor Of Update-ish Thing, but wouldn't generate
a reporter/reporter_baton pair, and would immediately begin driving the
provided editor/editor_baton.  And ra_serf's implementation thereof would,
of course, use send-all mode.

svnrdump is only trying to do essentally that anyway -- a update of
${NOTHING} to ${SOME_REV}.  It calls svn_ra_do_update(), uses the provided
reporter to say I've got nothing, then finalizes the report and away she
goes.  Would it not be more straightforward to offer a compact API for just
those sorts of use-cases -- the fake update from nothing to something
use-cases?

-- 
C. Michael Pilato cmpil...@collab.net
CollabNet  www.collab.net  Enterprise Cloud Development



signature.asc
Description: OpenPGP digital signature


Re: 1.7.8 up for testing/signing

2012-12-12 Thread C. Michael Pilato
On 12/12/2012 03:20 PM, Paul Burba wrote:
 Hi Ben,
 
 Not until after I signed this did I recall your note about migrating
 off of sha1 based keys --
 http://svn.haxx.se/dev/archive-2012-10/0073.shtml

Glad you said something about this, Paul!  I *did* remember that we were
using stronger keys, but failed to notice that I hadn't configured GPG to
pick my newer 4096-bit key.

Here are the updated signatures from me:

::: subversion-1.7.8.tar.gz :::
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAABCAAGBQJQyOz1AAoJEPXg8AH+aBMz+cAP/jQuT0/5bBIL1zBOMqAVDgNQ
WvAbY97EaC7UanxNWBKJ+EwZ0zhVVv0xvihes8Y0N2/2mioeFmhC7IPPVviaRyQf
fPUc6Geme5NxMZXgXAJqf8hyghiKtHxbbazaBN3bDB9ngBTBChl9YhG/fNaT+fIe
1dmCq/Vlg8V3Z2/4IOXDZMPp0jDE956chL6s597QyNEVNzSZ7piNhI0/OYKcGs45
5FPFfmHDxti77hNBbTrJXMAKcOdHtqMKkuQcljlqk1vADs+wbgtSsj7AEXQCicJ/
54udHV0N2+6OHpzd1TXgoHjz5xDZZav+SXH/K2/5a7gpqDS3n3RA0utga9V+oUeJ
GOoCkR+jOYlIA/xeHkj4Fc/VA9xmqFg0Dg1ot6+6/rM4qAoyNQln5KDP+vr/+dho
jZ4+E+f6rpDRltE3molkZVJ5g5Alk6D4w8BHV+txgIR4dcAdT/P+Y5sLGkdkBqpP
3RyrdDhg2eWt5dZmm8SgDN5K1zz6mNkuRtjj59fOEFqAoEM2WUyIcu0eQtZvAIJd
1ltbLrhQvq0HWEyQFwuNfDoDSZjUoT0CjnBCKXvC7MNSBzJwEJVtrXE+dVKl+ZtL
dnLr5Xf/R3NxO1hNJ/MFUMvHxZEpV24fwnm3z2yGUZTnmB4v/D6zhKX1LvKskY2a
GwKVcPWJDEmC5S7QJGuw
=B8zc
-END PGP SIGNATURE-

::: subversion-1.7.8.tar.bz2 :::
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAABCAAGBQJQyOz2AAoJEPXg8AH+aBMz5VUP/jcDKa9TrWcOm+MQyoFBtv9Q
kV0dUmlccv0q/uNHsoS/XFmobZudqSro6q+6yFSeL0o2jxObSTEwukNHs9FbVciM
7yzeWyuM5knwgdz+YdAJxS9l0cW/uXeo/KYUuvxVkj/4RSA1RW9DTtznbwbPUF7Z
nlVNXKa2lmu89xTl69PPjOXnro/L3GMglctQivAxVJsXLBA2xWxtw4h7x5ZaNNZi
QkQuxxsn77Kmah8ktJo51Rcu73+GY88JecoqHufGCDNUf12DfKAWwqqfpauFKViN
rD3KwAs44uCKD4eMrUQ60yZg3vaAsZymTG2W9o2UFjVteSnHIcgK5UumqYlIFKD6
V2ewcgqn8FXYHZsC6awSVo7bDnGcSg/ivkn723LFgTotaG19VkcnvYy8WK4/SbZl
cI93sq4omPvlxRziCfbrONReIhagl3oQVfRqHrwB9d+q3lEPFBfxkZ5mZtAc0XEP
nNffZowcni661Rwc5Y17RUCjgD44/3l4SOpOoGPml3XTdN3eNduPhtmasgo1ukOT
dfKrgM8fmeHprZztM2HnoqpDHKn5VvHYhA4aXE0Yx3dPUqOKuBucrYZASg7fVv1g
FntU/4b+u3ktQ9mu2gjyAvuWzsXw9kAQbExNO1YVqAj+1YjwPoZ+ahE1JIbsl0js
f804UC/0yfj2UxmHWSk/
=4BSG
-END PGP SIGNATURE-

And I'm about to commit the same to the dist repos.

-- 
C. Michael Pilato cmpil...@collab.net
CollabNet  www.collab.net  Enterprise Cloud Development



signature.asc
Description: OpenPGP digital signature


Re: svn commit: r1417639 - in /subversion/trunk/subversion/mod_dav_svn: dav_svn.h mod_dav_svn.c reports/update.c

2012-12-12 Thread Lieven Govaerts
On Wed, Dec 12, 2012 at 9:30 PM, C. Michael Pilato cmpil...@collab.net wrote:
 On 12/12/2012 03:02 PM, Lieven Govaerts wrote:
 On Tue, Dec 11, 2012 at 9:29 PM, C. Michael Pilato cmpil...@collab.net 
 wrote:
 Those technical challenges aside, I've since started to doubt the wisdom of
 adding special treatment of the starting revision to this API anyway.  I'll
 continue pondering other options.


 What about my earlier suggestion?

 I considered it.

 And ... then I considered it a nasty hack.  Seriously, this is really not
 the kind of thing that *should* be exposed through an API.

...
svn_boolean_t honor_editor_api_promises;
...

 Really?  :-)


Depends a bit on how you name that function of course, you could call
it relax_editor_depth_first_promise(svn_boolean_t) - with default to
true. This is my reading of the conclusion of your issue 2932: we're
relaxing the rules a bit, but we think it's safe to do so we make this
the new default.

 It does occur to me that one way to work around this is to add an API that
 seems generally useful:

   svn_ra_do_checkout()

 This would be Yet Another Flavor Of Update-ish Thing, but wouldn't generate
 a reporter/reporter_baton pair, and would immediately begin driving the
 provided editor/editor_baton.  And ra_serf's implementation thereof would,
 of course, use send-all mode.

Note that send-all is not the solution if the server insists on skelta
mode (see my previous comment), so if you do an update or a checkout,
you still have to tell serf to limit to one connection.


 svnrdump is only trying to do essentally that anyway -- a update of
 ${NOTHING} to ${SOME_REV}.  It calls svn_ra_do_update(), uses the provided
 reporter to say I've got nothing, then finalizes the report and away she
 goes.  Would it not be more straightforward to offer a compact API for just
 those sorts of use-cases -- the fake update from nothing to something
 use-cases?

Maybe, but would anything else besides svnrdump use this new API? svn
checkout/export solve this in a different manner already.

Lieven


Re: svn commit: r1417639 - in /subversion/trunk/subversion/mod_dav_svn: dav_svn.h mod_dav_svn.c reports/update.c

2012-12-12 Thread C. Michael Pilato
On 12/12/2012 03:30 PM, C. Michael Pilato wrote:
 On 12/12/2012 03:02 PM, Lieven Govaerts wrote:
 On Tue, Dec 11, 2012 at 9:29 PM, C. Michael Pilato cmpil...@collab.net 
 wrote:
 Those technical challenges aside, I've since started to doubt the wisdom of
 adding special treatment of the starting revision to this API anyway.  I'll
 continue pondering other options.


 What about my earlier suggestion?
 
 I considered it.
 
 And ... then I considered it a nasty hack.

Wait a second, though.  If we're talking about nasty hacks, what about this
one: 'svnrdump dump' grows code to set the new bulk-updates config option on
behalf of the user.  :-)

Something like this:

Index: subversion/svnrdump/svnrdump.c
===
--- subversion/svnrdump/svnrdump.c  (revision 1420957)
+++ subversion/svnrdump/svnrdump.c  (working copy)
@@ -341,7 +341,7 @@
 apr_pool_t *pool)
 {
   svn_client_ctx_t *ctx = NULL;
-  svn_config_t *cfg_config;
+  svn_config_t *cfg_config, *cfg_servers;

   SVN_ERR(svn_ra_initialize(pool));

@@ -357,6 +357,13 @@
   cfg_config = apr_hash_get(ctx-config, SVN_CONFIG_CATEGORY_CONFIG,
 APR_HASH_KEY_STRING);

+  /* Forcibly prefer bulk-updates to work around issue #4116
+ (http://subversion.tigris.org/issues/show_bug.cgi?id=4116). */
+  cfg_servers = apr_hash_get(ctx-config, SVN_CONFIG_CATEGORY_SERVERS,
+ APR_HASH_KEY_STRING);
+  svn_config_set_bool(cfg_servers, SVN_CONFIG_SECTION_GLOBAL,
+  SVN_CONFIG_OPTION_BULK_UPDATES, TRUE);
+
   /* Set up our cancellation support. */
   ctx-cancel_func = check_cancel;


-- 
C. Michael Pilato cmpil...@collab.net
CollabNet  www.collab.net  Enterprise Cloud Development



signature.asc
Description: OpenPGP digital signature


Re: svn commit: r1417639 - in /subversion/trunk/subversion/mod_dav_svn: dav_svn.h mod_dav_svn.c reports/update.c

2012-12-12 Thread Lieven Govaerts
Mike,

On Wed, Dec 12, 2012 at 10:15 PM, C. Michael Pilato cmpil...@collab.net wrote:
 On 12/12/2012 03:30 PM, C. Michael Pilato wrote:
 On 12/12/2012 03:02 PM, Lieven Govaerts wrote:
 On Tue, Dec 11, 2012 at 9:29 PM, C. Michael Pilato cmpil...@collab.net 
 wrote:
 Those technical challenges aside, I've since started to doubt the wisdom of
 adding special treatment of the starting revision to this API anyway.  I'll
 continue pondering other options.


 What about my earlier suggestion?

 I considered it.

 And ... then I considered it a nasty hack.

 Wait a second, though.  If we're talking about nasty hacks, what about this
 one: 'svnrdump dump' grows code to set the new bulk-updates config option on
 behalf of the user.  :-)

You're not reading my mails at all are you? ;)
That's what I suggested before, but I found later that it will not
work because the server can force the client to use skelta mode
(SVNAllowBulkUpdates Off).



 Something like this:

 Index: subversion/svnrdump/svnrdump.c
 ===
 --- subversion/svnrdump/svnrdump.c  (revision 1420957)
 +++ subversion/svnrdump/svnrdump.c  (working copy)
 @@ -341,7 +341,7 @@
  apr_pool_t *pool)
  {
svn_client_ctx_t *ctx = NULL;
 -  svn_config_t *cfg_config;
 +  svn_config_t *cfg_config, *cfg_servers;

SVN_ERR(svn_ra_initialize(pool));

 @@ -357,6 +357,13 @@
cfg_config = apr_hash_get(ctx-config, SVN_CONFIG_CATEGORY_CONFIG,
  APR_HASH_KEY_STRING);

 +  /* Forcibly prefer bulk-updates to work around issue #4116
 + (http://subversion.tigris.org/issues/show_bug.cgi?id=4116). */
 +  cfg_servers = apr_hash_get(ctx-config, SVN_CONFIG_CATEGORY_SERVERS,
 + APR_HASH_KEY_STRING);
 +  svn_config_set_bool(cfg_servers, SVN_CONFIG_SECTION_GLOBAL,
 +  SVN_CONFIG_OPTION_BULK_UPDATES, TRUE);
 +

Also, this setting can be set per server group by the user so
overriding the above, but I got the idea! ;)

/* Set up our cancellation support. */
ctx-cancel_func = check_cancel;


 --
 C. Michael Pilato cmpil...@collab.net
 CollabNet  www.collab.net  Enterprise Cloud Development


Lieven


Re: svn commit: r1417639 - in /subversion/trunk/subversion/mod_dav_svn: dav_svn.h mod_dav_svn.c reports/update.c

2012-12-12 Thread C. Michael Pilato
On 12/12/2012 04:04 PM, Lieven Govaerts wrote:
 Note that send-all is not the solution if the server insists on skelta
 mode (see my previous comment), so if you do an update or a checkout,
 you still have to tell serf to limit to one connection.

And that's trickier than it seems, IIRC, because Ivan changed ra_serf to
recycle even the first connection as an auxiliary one once the REPORT is
completely processed.

 svnrdump is only trying to do essentally that anyway -- a update of
 ${NOTHING} to ${SOME_REV}.  It calls svn_ra_do_update(), uses the provided
 reporter to say I've got nothing, then finalizes the report and away she
 goes.  Would it not be more straightforward to offer a compact API for just
 those sorts of use-cases -- the fake update from nothing to something
 use-cases?
 
 Maybe, but would anything else besides svnrdump use this new API? svn
 checkout/export solve this in a different manner already.

Well, in retrospect, I would name it something that did *not* have
checkout in the name:  svn_ra_do_export(), or svn_ra_dump_tree(), or
something.  And actually, I suspect that 'svn export' could use exactly this
function!  ('svn checkout' could not, because it really *is* an update under
the hood.)  But of course, it wouldn't do so because it prefers the more
performant async approach.  All of which leads us back to turning away from
the send-all/non-send-all focus, and onto, as you said, limiting ourselves
to a single auxiliary fetch connection.

Still, we have to have a way to sensibly decide when to do so.

Here's a question I've been wondering for some time:  should we expose to
users a configuration option for declaring the number of aux connections
ra_serf should use?  I mean, Firefox has exposed such an option for years.
If we did so for Subversion, we could say, Yeah, ra_serf+svnrdump is a bad
combination.  Here's a workaround.  Run it with
--config-option=servers:global:serf-max-connections=2.  Or better yet (as
per my other mail in this thread), we could just hardcode that option
override in svnrdump itself.

-- 
C. Michael Pilato cmpil...@collab.net
CollabNet  www.collab.net  Enterprise Cloud Development



signature.asc
Description: OpenPGP digital signature


Re: [PATCH] Test for line ending bug in svnrdump (issue 4263)

2012-12-12 Thread Ben Reser
On Tue, Dec 11, 2012 at 5:59 PM, Ben Reser b...@reser.org wrote:
 I'd say that replacing '\r' with a 'space' is wrong.  That would
 change the meaning of some properties.  E.G. svn:ignore, svn:externals
 which use lines to handle individual records within them.

To be more explicit, I think you should change CR or CRLF into LF.


Re: [PATCH] Test for line ending bug in svnrdump (issue 4263)

2012-12-12 Thread Daniel Shahaf
Ben Reser wrote on Wed, Dec 12, 2012 at 13:57:30 -0800:
 On Tue, Dec 11, 2012 at 5:59 PM, Ben Reser b...@reser.org wrote:
  I'd say that replacing '\r' with a 'space' is wrong.  That would
  change the meaning of some properties.  E.G. svn:ignore, svn:externals
  which use lines to handle individual records within them.
 
 To be more explicit, I think you should change CR or CRLF into LF.

I've applied your patch Gabriela, with a tweak to the log message and
with the addition of an expected_dumpfile_path parameter.  Currently the
test checks what Ben said --- which is also consistent with what you and
danielsh suggested in earlier emails.

Naturally we can change the test's expectations if down the road we
decide the correct behaviour is something else.

Thanks for the patch!

Daniel

P.S.  This thread was an unusually long one, for a patch that adds about
a dozen lines of code.


Re: svn commit: r1417639 - in /subversion/trunk/subversion/mod_dav_svn: dav_svn.h mod_dav_svn.c reports/update.c

2012-12-12 Thread C. Michael Pilato
On 12/12/2012 04:23 PM, Lieven Govaerts wrote:
 You're not reading my mails at all are you? ;)
 That's what I suggested before, but I found later that it will not
 work because the server can force the client to use skelta mode
 (SVNAllowBulkUpdates Off).

I'm starting to think I must have missed some, for sure.  Sorry about that.
 I'll re-read the whole thread (from archives) before continuing to blab on.

-- 
C. Michael Pilato cmpil...@collab.net
CollabNet  www.collab.net  Enterprise Cloud Development



signature.asc
Description: OpenPGP digital signature


Re: [PATCH] fix kwallet-related crash when solving conflicts

2012-12-12 Thread Ben Reser
On Wed, Dec 12, 2012 at 3:04 PM, Lekensteyn lekenst...@gmail.com wrote:
 Further debugging revealed that a child process of svn segfaults and that this
 happens because of misuse of apr_pool_cleanup_register. That function does not
 accept null helpers. I've grepped the svn repo and the kwallet auth code is
 the only place where this error occurs.

Thanks for the complete bug report and patch.

Applied in r1421103.  FYI, since 1.7.8 is in the process of releasing
now this won't be included.