You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2015/07/30 18:47:48 UTC
svn commit: r1693455 - in /subversion/branches/move-tracking-2: ./ build/
build/ac-macros/apache.m4 subversion/ subversion/include/svn_client.h
subversion/libsvn_client/resolved.c subversion/libsvn_wc/conflicts.c
subversion/tests/cmdline/davautocheck.sh
Author: julianfoad
Date: Thu Jul 30 16:47:47 2015
New Revision: 1693455
URL: http://svn.apache.org/r1693455
Log:
On the 'move-tracking-2' branch: catch up to trunk@1693454.
Modified:
subversion/branches/move-tracking-2/ (props changed)
subversion/branches/move-tracking-2/build/ (props changed)
subversion/branches/move-tracking-2/build/ac-macros/apache.m4
subversion/branches/move-tracking-2/subversion/ (props changed)
subversion/branches/move-tracking-2/subversion/include/svn_client.h
subversion/branches/move-tracking-2/subversion/libsvn_client/resolved.c
subversion/branches/move-tracking-2/subversion/libsvn_wc/conflicts.c
subversion/branches/move-tracking-2/subversion/tests/cmdline/davautocheck.sh
Propchange: subversion/branches/move-tracking-2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 30 16:47:47 2015
@@ -90,4 +90,4 @@
/subversion/branches/verify-at-commit:1462039-1462408
/subversion/branches/verify-keep-going:1439280-1546110
/subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1606692-1692852
+/subversion/trunk:1606692-1693454
Propchange: subversion/branches/move-tracking-2/build/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 30 16:47:47 2015
@@ -82,4 +82,4 @@
/subversion/branches/verify-at-commit/build:1462039-1462408
/subversion/branches/verify-keep-going/build:1439280-1546110
/subversion/branches/wc-collate-path/build:1402685-1480384
-/subversion/trunk/build:1606692-1692852
+/subversion/trunk/build:1606692-1693454
Modified: subversion/branches/move-tracking-2/build/ac-macros/apache.m4
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/build/ac-macros/apache.m4?rev=1693455&r1=1693454&r2=1693455&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/build/ac-macros/apache.m4 (original)
+++ subversion/branches/move-tracking-2/build/ac-macros/apache.m4 Thu Jul 30 16:47:47 2015
@@ -89,6 +89,33 @@ else
AC_MSG_RESULT(no)
fi
+# check for some busted versions of mod_dav
+# in particular 2.2.25, 2.4.5, and 2.4.6 had the following bugs which are
+# troublesome for Subversion:
+# PR 55304: https://issues.apache.org/bugzilla/show_bug.cgi?id=55304
+# PR 55306: https://issues.apache.org/bugzilla/show_bug.cgi?id=55306
+# PR 55397: https://issues.apache.org/bugzilla/show_bug.cgi?id=55397
+if test -n "$APXS" && test "$APXS" != "no"; then
+ AC_MSG_CHECKING([mod_dav version])
+ HTTPD_MAJOR=`$SED -ne '/^#define AP_SERVER_MAJORVERSION_NUMBER/p' "$APXS_INCLUDE/ap_release.h" | $SED -e 's/^.*NUMBER *//'`
+ HTTPD_MINOR=`$SED -ne '/^#define AP_SERVER_MINORVERSION_NUMBER/p' "$APXS_INCLUDE/ap_release.h" | $SED -e 's/^.*NUMBER *//'`
+ HTTPD_PATCH=`$SED -ne '/^#define AP_SERVER_PATCHLEVEL_NUMBER/p' "$APXS_INCLUDE/ap_release.h" | $SED -e 's/^.*NUMBER *//'`
+ HTTPD_VERSION="${HTTPD_MAJOR}.${HTTPD_MINOR}.${HTTPD_PATCH}"
+ case "$HTTPD_VERSION" in
+ 2.2.25 | 2.4.[[5-6]])
+ AC_MSG_RESULT([broken])
+ AC_MSG_ERROR([Apache httpd version $HTTPD_VERSION includes a broken mod_dav; use a newer version of httpd])
+ ;;
+ 2.[[0-9]]*.[[0-9]]*)
+ AC_MSG_RESULT([acceptable])
+ ;;
+ *)
+ AC_MSG_RESULT([unrecognised])
+ AC_MSG_ERROR([Apache httpd version $HTTPD_VERSION not recognised])
+ ;;
+ esac
+fi
+
if test -n "$APXS" && test "$APXS" != "no"; then
AC_MSG_CHECKING([whether Apache version is compatible with APR version])
apr_major_version="${apr_version%%.*}"
@@ -106,37 +133,15 @@ if test -n "$APXS" && test "$APXS" != "n
AC_MSG_ERROR([unknown APR version])
;;
esac
- old_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES"
- AC_EGREP_CPP([apache_minor_version= *\"$apache_minor_version_wanted_regex\"],
- [
-#include "$APXS_INCLUDE/ap_release.h"
-apache_minor_version=AP_SERVER_MINORVERSION],
- [AC_MSG_RESULT([yes])],
- [AC_MSG_RESULT([no])
- AC_MSG_ERROR([Apache version incompatible with APR version])])
- CPPFLAGS="$old_CPPFLAGS"
-fi
-
-# check for some busted versions of mod_dav
-# in particular 2.2.25, 2.4.5, and 2.4.6 had the following bugs which are
-# troublesome for Subversion:
-# PR 55304: https://issues.apache.org/bugzilla/show_bug.cgi?id=55304
-# PR 55306: https://issues.apache.org/bugzilla/show_bug.cgi?id=55306
-# PR 55397: https://issues.apache.org/bugzilla/show_bug.cgi?id=55397
-if test -n "$APXS" && test "$APXS" != "no"; then
- AC_MSG_CHECKING([mod_dav version])
- old_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES"
- blacklisted_versions_regex=["\"2\" \"\.\" (\"2\" \"\.\" \"25\"|\"4\" \"\.\" \"[56]\")"]
- AC_EGREP_CPP([apache_version= *$blacklisted_versions_regex],
- [
-#include "$APXS_INCLUDE/ap_release.h"
-apache_version=AP_SERVER_BASEREVISION],
- [AC_MSG_RESULT([broken])
- AC_MSG_ERROR([Apache httpd version includes a broken mod_dav; use a newer version of httpd])],
- [AC_MSG_RESULT([acceptable])])
- CPPFLAGS="$old_CPPFLAGS"
+ case $HTTPD_MINOR in
+ $apache_minor_version_wanted_regex)
+ AC_MSG_RESULT([yes])
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Apache version $HTTPD_VERSION incompatible with APR version $apr_version])
+ ;;
+ esac
fi
AC_ARG_WITH(apache-libexecdir,
@@ -162,11 +167,6 @@ if test -n "$APXS" && test "$APXS" != "n
BUILD_APACHE_RULE=apache-mod
INSTALL_APACHE_RULE=install-mods-shared
INSTALL_APACHE_MODS=true
- HTTPD="`$APXS -q sbindir`/`$APXS -q PROGNAME`"
- if ! test -e $HTTPD ; then
- HTTPD="`$APXS -q bindir`/`$APXS -q PROGNAME`"
- fi
- HTTPD_VERSION=["`$HTTPD -v | $SED -e 's/^.*\/\([0-9.]*\).*$/\1/' -e 1q`"]
AC_ARG_ENABLE(broken-httpd-auth,
AS_HELP_STRING([--enable-broken-httpd-auth],
[Allow building against httpd 2.4 with broken auth]),
Propchange: subversion/branches/move-tracking-2/subversion/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 30 16:47:47 2015
@@ -82,4 +82,4 @@
/subversion/branches/verify-at-commit/subversion:1462039-1462408
/subversion/branches/verify-keep-going/subversion:1439280-1546110
/subversion/branches/wc-collate-path/subversion:1402685-1480384
-/subversion/trunk/subversion:1606692-1692852
+/subversion/trunk/subversion:1606692-1693454
Modified: subversion/branches/move-tracking-2/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_client.h?rev=1693455&r1=1693454&r2=1693455&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_client.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_client.h Thu Jul 30 16:47:47 2015
@@ -4411,37 +4411,6 @@ svn_client_conflict_from_wc_description2
apr_pool_t *scratch_pool);
/**
- * Callback for svn_client_conflict_walk_conflicts();
- *
- * @since New in 1.10.
- */
-typedef svn_error_t *(svn_client_conflict_walk_func_t)(
- void *baton,
- svn_client_conflict_t *conflict,
- apr_pool_t *scratch_pool);
-
-/**
- * Walk all conflicts within the specified @a depth of @a local_abspath.
- * Pass each conflict found during the walk to the @conflict_walk_func
- * callback, along with @a conflict_walk_func_baton.
- * Use cancellation and notification support provided by client context @a ctx.
- *
- * This callback may choose to resolve the conflict. If the act of resolving
- * a conflict creates new conflicts within the walked working copy (as might
- * be the case for some tree conflicts), the callback will be invoked for each
- * such new conflict as well.
- *
- * @since New in 1.10.
- */
-svn_error_t *
-svn_client_conflict_walk(const char *local_abspath,
- svn_depth_t depth,
- svn_client_conflict_walk_func_t conflict_walk_func,
- void *conflict_walk_func_baton,
- svn_client_ctx_t *ctx,
- apr_pool_t *scratch_pool);
-
-/**
* Indicate the types of conflicts present on the working copy node
* described by @a conflict. Any output argument may be @c NULL if
* the caller is not interested in the status of a particular type.
Modified: subversion/branches/move-tracking-2/subversion/libsvn_client/resolved.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_client/resolved.c?rev=1693455&r1=1693454&r2=1693455&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_client/resolved.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_client/resolved.c Thu Jul 30 16:47:47 2015
@@ -257,77 +257,6 @@ svn_client_conflict_from_wc_description2
result_pool, scratch_pool));
}
-/* Baton type for conflict_walk_status_func(). */
-typedef struct conflict_walk_status_baton_t {
-
- svn_client_conflict_walk_func_t *conflict_walk_func;
- void *conflict_walk_func_baton;
-
- svn_client_ctx_t *ctx;
- int conflicts_found;
-
-} conflict_walk_status_baton_t;
-
-/* Implements svn_wc_status_func4_t. */
-static svn_error_t *
-conflict_walk_status_func(void *baton,
- const char *local_abspath,
- const svn_wc_status3_t *status,
- apr_pool_t *scratch_pool)
-{
- conflict_walk_status_baton_t *b = baton;
- svn_client_conflict_t *conflict;
-
- if (!status->conflicted)
- return SVN_NO_ERROR;
-
- b->conflicts_found++;
-
- SVN_ERR(svn_client_conflict_get(&conflict, local_abspath, b->ctx,
- scratch_pool, scratch_pool));
- SVN_ERR(b->conflict_walk_func(b->conflict_walk_func_baton,
- conflict, scratch_pool));
-
- return SVN_NO_ERROR;
-}
-
-svn_error_t *
-svn_client_conflict_walk(const char *local_abspath,
- svn_depth_t depth,
- svn_client_conflict_walk_func_t conflict_walk_func,
- void *conflict_walk_func_baton,
- svn_client_ctx_t *ctx,
- apr_pool_t *scratch_pool)
-{
- conflict_walk_status_baton_t b;
-
- b.conflict_walk_func = conflict_walk_func;
- b.conflict_walk_func_baton = conflict_walk_func_baton;
- b.ctx = ctx;
-
- /* ### Re-run the status walk until a walk finds no conflicts at all.
- * ### This is a crude implementation but provides the guarantees we offer
- * ### to the caller. To optimize we should check for notifications of new
- * ### conflicts created during the first status walk and then keep invoking
- * ### the callback directly on any new conflicts.
- */
- do
- {
- b.conflicts_found = 0;
- SVN_ERR(svn_wc_walk_status(ctx->wc_ctx, local_abspath, depth,
- FALSE, /* get_all */
- FALSE, /* no_ignore, */
- TRUE, /* ignore_externals */
- NULL, /* ignore_patterns */
- conflict_walk_status_func, &b,
- ctx->cancel_func, ctx->cancel_baton,
- scratch_pool));
- }
- while (b.conflicts_found > 0);
-
- return SVN_NO_ERROR;
-}
-
typedef svn_error_t *(*conflict_option_resolve_func_t)(
svn_client_conflict_option_t *option,
svn_client_conflict_t *conflict,
Modified: subversion/branches/move-tracking-2/subversion/libsvn_wc/conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_wc/conflicts.c?rev=1693455&r1=1693454&r2=1693455&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_wc/conflicts.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_wc/conflicts.c Thu Jul 30 16:47:47 2015
@@ -2589,6 +2589,35 @@ resolve_prop_conflict_on_node(svn_boolea
return SVN_NO_ERROR;
}
+/*
+ * Record a tree conflict resolution failure due to error condition ERR
+ * in the RESOLVE_LATER hash table. If the hash table is not available
+ * (meaning the caller does not wish to retry resolution later), or if
+ * the error condition does not indicate circumstances where another
+ * existing tree conflict is blocking the resolution attempt, then
+ * return the error ERR itself.
+ */
+static svn_error_t *
+handle_tree_conflict_resolution_failure(const char *local_abspath,
+ svn_error_t *err,
+ apr_hash_t *resolve_later)
+{
+ const char *dup_abspath;
+
+ if (!resolve_later
+ || (err->apr_err != SVN_ERR_WC_OBSTRUCTED_UPDATE
+ && err->apr_err != SVN_ERR_WC_FOUND_CONFLICT))
+ return svn_error_trace(err); /* Give up. Do not retry resolution later. */
+
+ svn_error_clear(err);
+ dup_abspath = apr_pstrdup(apr_hash_pool_get(resolve_later),
+ local_abspath);
+
+ svn_hash_sets(resolve_later, dup_abspath, dup_abspath);
+
+ return SVN_NO_ERROR; /* Caller may retry after resolving other conflicts. */
+}
+
/*
* Resolve the tree conflict found in DB/LOCAL_ABSPATH according to
* CONFLICT_CHOICE.
@@ -2598,9 +2627,11 @@ resolve_prop_conflict_on_node(svn_boolea
*
* It is not an error if there is no tree conflict.
*
- * If the conflict can't be resolved yet because another tree conflict is
- * blocking a storage location, store the tree conflict in the RESOLVE_LATER
- * hash.
+ * If the conflict can't be resolved yet (e.g. because another tree conflict
+ * is blocking a storage location), and RESOLVE_LATER is not NULL, store the
+ * tree conflict in RESOLVE_LATER and do not mark the conflict resolved.
+ * Else if RESOLVE_LATER is NULL, do not mark the conflict resolved and
+ * return the error which prevented the conflict from being marked resolved.
*/
static svn_error_t *
resolve_tree_conflict_on_node(svn_boolean_t *did_resolve,
@@ -2675,22 +2706,8 @@ resolve_tree_conflict_on_node(svn_boolea
scratch_pool);
if (err)
- {
- const char *dup_abspath;
-
- if (!resolve_later
- || (err->apr_err != SVN_ERR_WC_OBSTRUCTED_UPDATE
- && err->apr_err != SVN_ERR_WC_FOUND_CONFLICT))
- return svn_error_trace(err);
-
- svn_error_clear(err);
- dup_abspath = apr_pstrdup(apr_hash_pool_get(resolve_later),
- local_abspath);
-
- svn_hash_sets(resolve_later, dup_abspath, dup_abspath);
-
- return SVN_NO_ERROR; /* Retry after other conflicts */
- }
+ SVN_ERR(handle_tree_conflict_resolution_failure(
+ local_abspath, err, resolve_later));
/* We might now have a moved-away on *this* path, let's
try to resolve that directly if that is the case */
@@ -2757,22 +2774,8 @@ resolve_tree_conflict_on_node(svn_boolea
scratch_pool);
if (err)
- {
- const char *dup_abspath;
-
- if (!resolve_later
- || (err->apr_err != SVN_ERR_WC_OBSTRUCTED_UPDATE
- && err->apr_err != SVN_ERR_WC_FOUND_CONFLICT))
- return svn_error_trace(err);
-
- svn_error_clear(err);
- dup_abspath = apr_pstrdup(apr_hash_pool_get(resolve_later),
- local_abspath);
-
- svn_hash_sets(resolve_later, dup_abspath, dup_abspath);
-
- return SVN_NO_ERROR; /* Retry after other conflicts */
- }
+ SVN_ERR(handle_tree_conflict_resolution_failure(
+ local_abspath, err, resolve_later));
else
*did_resolve = TRUE;
}
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/davautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/davautocheck.sh?rev=1693455&r1=1693454&r2=1693455&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/davautocheck.sh (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/davautocheck.sh Thu Jul 30 16:47:47 2015
@@ -566,7 +566,7 @@ CustomLog "$HTTPD_ROOT/ops" "%
</IfModule>
<IfModule !mod_authz_core.c>
Allow from all
- </IfMOdule>
+ </IfModule>
${SVN_PATH_AUTHZ_LINE}
</Location>
<Location /authz-test-work/mixed>
@@ -626,20 +626,6 @@ CustomLog "$HTTPD_ROOT/ops" "%
</Location>
<Location /authz-test-work/authn-lcuser>
DAV svn
- SVNParentPath "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp"
- AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
- SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
- SVNCacheRevProps ${CACHE_REVPROPS_SETTING}
- SVNListParentPath On
- AuthType Basic
- AuthName "Subversion Repository"
- AuthUserFile $HTTPD_USERS
- Require valid-user
- AuthzForceUsernameCase Lower
- ${SVN_PATH_AUTHZ_LINE}
-</Location>
-<Location /authz-test-work/authn-lcuser>
- DAV svn
SVNParentPath "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp"
AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}