You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by gs...@apache.org on 2012/05/18 00:45:38 UTC
svn commit: r1339905 - in /subversion/branches/ev2-export: ./
build/generator/ build/win32/ notes/ subversion/include/private/
subversion/libsvn_client/ subversion/libsvn_fs/ subversion/libsvn_ra/
subversion/libsvn_ra_neon/ subversion/libsvn_ra_serf/ s...
Author: gstein
Date: Thu May 17 22:45:36 2012
New Revision: 1339905
URL: http://svn.apache.org/viewvc?rev=1339905&view=rev
Log:
On the ev2-export branch:
Bring up to date with trunk.
Added:
subversion/branches/ev2-export/subversion/svnmucc/ (props changed)
- copied from r1339904, subversion/trunk/subversion/svnmucc/
Removed:
subversion/branches/ev2-export/tools/client-side/svnmucc/
Modified:
subversion/branches/ev2-export/ (props changed)
subversion/branches/ev2-export/CHANGES
subversion/branches/ev2-export/COMMITTERS
subversion/branches/ev2-export/Makefile.in
subversion/branches/ev2-export/build.conf
subversion/branches/ev2-export/build/generator/gen_make.py
subversion/branches/ev2-export/build/win32/make_dist.py
subversion/branches/ev2-export/build/win32/vc6-build.bat.in
subversion/branches/ev2-export/notes/knobs
subversion/branches/ev2-export/subversion/include/private/svn_ra_private.h
subversion/branches/ev2-export/subversion/include/private/svn_repos_private.h
subversion/branches/ev2-export/subversion/libsvn_client/merge.c
subversion/branches/ev2-export/subversion/libsvn_fs/editor.c
subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.c
subversion/branches/ev2-export/subversion/libsvn_ra_neon/util.c
subversion/branches/ev2-export/subversion/libsvn_ra_serf/mergeinfo.c
subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h
subversion/branches/ev2-export/subversion/libsvn_ra_serf/serf.c
subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c
subversion/branches/ev2-export/subversion/libsvn_ra_serf/xml.c
subversion/branches/ev2-export/subversion/libsvn_repos/dump.c
subversion/branches/ev2-export/subversion/libsvn_repos/replay.c
subversion/branches/ev2-export/subversion/tests/cmdline/commit_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/prop_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/svnmucc_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/svntest/main.py
subversion/branches/ev2-export/tools/dev/windows-build/Makefile
subversion/branches/ev2-export/win-tests.py
Propchange: subversion/branches/ev2-export/
------------------------------------------------------------------------------
Merged /subversion/trunk:r1339208-1339904
Modified: subversion/branches/ev2-export/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/CHANGES?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/CHANGES (original)
+++ subversion/branches/ev2-export/CHANGES Thu May 17 22:45:36 2012
@@ -32,7 +32,7 @@ http://svn.apache.org/repos/asf/subversi
*
- Other tool improvements and bugfixes:
- *
+ * 'svnmucc' promoted to first-class supported utility (issue #3308)
Developer-visible changes:
- General:
Modified: subversion/branches/ev2-export/COMMITTERS
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/COMMITTERS?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/COMMITTERS [UTF-8] (original)
+++ subversion/branches/ev2-export/COMMITTERS [UTF-8] Thu May 17 22:45:36 2012
@@ -94,7 +94,7 @@ Commit access for specific areas:
joeswatosh Joe Swatosh <jo...@gmail.com> (Swig-Ruby b.)
jrvernooij Jelmer Vernooij <je...@samba.org> (Python bindings)
sage Sage LaTorra <sa...@gmail.com> (Ctypes-Python b.)
- rdonch Роман Донченко <DX...@yandex.ru> (Swig-Python b.)
+ rdonch Роман Донченко <dp...@corrigendum.ru> (Swig-Python b.)
Packages:
Modified: subversion/branches/ev2-export/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/Makefile.in?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/Makefile.in (original)
+++ subversion/branches/ev2-export/Makefile.in Thu May 17 22:45:36 2012
@@ -451,7 +451,7 @@ check-all-javahl: check-apache-javahl ch
# "make check CLEANUP=true" will clean up directories for successful tests.
# "make check TESTS=subversion/tests/cmdline/basic_tests.py"
# will perform only basic tests (likewise for other tests).
-check: bin @TRANSFORM_LIBTOOL_SCRIPTS@ $(TEST_DEPS) @BDB_TEST_DEPS@ svnmucc
+check: bin @TRANSFORM_LIBTOOL_SCRIPTS@ $(TEST_DEPS) @BDB_TEST_DEPS@
@if test "$(PYTHON)" != "none"; then \
flags="--verbose"; \
if test "$(CLEANUP)" != ""; then \
@@ -504,38 +504,38 @@ check: bin @TRANSFORM_LIBTOOL_SCRIPTS@ $
# First, set up Apache as documented in
# subversion/tests/cmdline/README.
-davcheck: bin $(TEST_DEPS) @BDB_TEST_DEPS@ apache-mod svnmucc
+davcheck: bin $(TEST_DEPS) @BDB_TEST_DEPS@ apache-mod
@$(MAKE) check BASE_URL=http://localhost
# Automatically configure and run Apache httpd on a random port, and then
# run make check.
-davautocheck: bin $(TEST_DEPS) @BDB_TEST_DEPS@ apache-mod svnmucc
+davautocheck: bin $(TEST_DEPS) @BDB_TEST_DEPS@ apache-mod
@# Takes MODULE_PATH, USE_HTTPV1 and SVN_PATH_AUTHZ in the environment.
@APXS=$(APXS) $(top_srcdir)/subversion/tests/cmdline/davautocheck.sh
# First, run:
# subversion/svnserve/svnserve -d -r `pwd`/subversion/tests/cmdline
-svncheck: bin $(TEST_DEPS) @BDB_TEST_DEPS@ svnmucc
+svncheck: bin $(TEST_DEPS) @BDB_TEST_DEPS@
@$(MAKE) check BASE_URL=svn://127.0.0.1
# 'make svnserveautocheck' runs svnserve for you and kills it.
-svnserveautocheck: svnserve bin $(TEST_DEPS) @BDB_TEST_DEPS@ svnmucc
+svnserveautocheck: svnserve bin $(TEST_DEPS) @BDB_TEST_DEPS@
@env PYTHON=$(PYTHON) THREADED=$(THREADED) \
$(top_srcdir)/subversion/tests/cmdline/svnserveautocheck.sh
# First, run:
# subversion/svnserve/svnserve --listen-host "::1" -d -r `pwd`/subversion/tests/cmdline
-svncheck6: bin $(TEST_DEPS) @BDB_TEST_DEPS@ svnmucc
+svncheck6: bin $(TEST_DEPS) @BDB_TEST_DEPS@
@$(MAKE) check BASE_URL=svn://\[::1\]
# First make sure you can ssh to localhost and that "svnserve" is in
# the path of the resulting shell.
-svnsshcheck: bin $(TEST_DEPS) @BDB_TEST_DEPS@ svnmucc
+svnsshcheck: bin $(TEST_DEPS) @BDB_TEST_DEPS@
@$(MAKE) check \
BASE_URL=svn+ssh://localhost`pwd`/subversion/tests/cmdline
-bdbcheck: bin $(TEST_DEPS) @BDB_TEST_DEPS@ svnmucc
+bdbcheck: bin $(TEST_DEPS) @BDB_TEST_DEPS@
@$(MAKE) check FS_TYPE=bdb
check-clean:
@@ -863,3 +863,11 @@ clean-ctypes-python:
# manually describe a dependency, which we won't otherwise detect
subversion/libsvn_wc/wc-queries.h: $(abs_srcdir)/subversion/libsvn_wc/wc-metadata.sql
subversion/libsvn_wc/wc-queries.h: $(abs_srcdir)/subversion/libsvn_wc/wc-checks.sql
+
+# Compatibility symlink.
+# This runs after the target of the same name in build-outputs.mk.
+INSTALL_EXTRA_TOOLS=\
+ $(MKDIR) $(DESTDIR)$(bindir); \
+ test -n "$$SVN_SVNMUCC_IS_SVNSYITF" && \
+ ln -sf svnmucc$(EXEEXT) $(DESTDIR)$(bindir)/svnsyitf$(EXEEXT); \
+ ln -sf $(DESTDIR)$(bindir)/svnmucc$(EXEEXT) $(DESTDIR)$(toolsdir)/svnmucc$(EXEEXT)
Modified: subversion/branches/ev2-export/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build.conf?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/build.conf (original)
+++ subversion/branches/ev2-export/build.conf Thu May 17 22:45:36 2012
@@ -174,6 +174,14 @@ libs = libsvn_client libsvn_ra libsvn_re
install = bin
manpages = subversion/svnrdump/svnrdump.1
+[svnmucc]
+description = Subversion Multiple URL Command Client
+type = exe
+path = subversion/svnmucc
+libs = libsvn_client libsvn_ra libsvn_subr libsvn_delta apriconv apr neon
+install = bin
+manpages = subversion/svnmucc/svnmucc.1
+
# Support for GNOME Keyring
[libsvn_auth_gnome_keyring]
description = Subversion GNOME Keyring Library
@@ -1215,13 +1223,6 @@ libs = __JAVAHL__ javahl-tests javahl-co
# ----------------------------------------------------------------------------
# Contrib and tools
-[svnmucc]
-type = exe
-path = tools/client-side/svnmucc
-sources = svnmucc.c
-install = tools
-libs = libsvn_client libsvn_ra libsvn_subr libsvn_delta apriconv apr neon
-
[diff]
type = exe
path = tools/diff
Modified: subversion/branches/ev2-export/build/generator/gen_make.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/generator/gen_make.py?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/generator/gen_make.py (original)
+++ subversion/branches/ev2-export/build/generator/gen_make.py Thu May 17 22:45:36 2012
@@ -422,7 +422,8 @@ class Generator(gen_base.GeneratorBase):
# in Makefile.in
### we should turn AREA into an object, then test it instead of this
if area[:5] == 'swig-' and area[-4:] != '-lib' or \
- area[:7] == 'javahl-':
+ area[:7] == 'javahl-' \
+ or area == 'tools':
ezt_area.extra_install = 'yes'
########################################
Modified: subversion/branches/ev2-export/build/win32/make_dist.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/win32/make_dist.py?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/win32/make_dist.py (original)
+++ subversion/branches/ev2-export/build/win32/make_dist.py Thu May 17 22:45:36 2012
@@ -211,10 +211,10 @@ _disttree = {'': OptFile('%(readme)s', '
File('%(blddir)s/svnversion/svnversion.pdb'),
File('%(blddir)s/svnrdump/svnrdump.exe'),
File('%(blddir)s/svnrdump/svnrdump.pdb'),
+ File('%(blddir)s/svnmucc/svnmucc.exe'),
+ File('%(blddir)s/svnmucc/svnmucc.pdb'),
File('%(blddir)s/../contrib/client-side/svn-push/svn-push.exe'),
File('%(blddir)s/../contrib/client-side/svn-push/svn-push.pdb'),
- File('%(blddir)s/../tools/client-side/svnmucc/svnmucc.exe'),
- File('%(blddir)s/../tools/client-side/svnmucc/svnmucc.pdb'),
File('%(blddir)s/../tools/server-side/svnauthz-validate.exe'),
File('%(blddir)s/../tools/server-side/svnauthz-validate.pdb'),
File('%(blddir)s/../tools/server-side/svn-populate-node-origins-index.exe'),
Modified: subversion/branches/ev2-export/build/win32/vc6-build.bat.in
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/win32/vc6-build.bat.in?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/win32/vc6-build.bat.in (original)
+++ subversion/branches/ev2-export/build/win32/vc6-build.bat.in Thu May 17 22:45:36 2012
@@ -137,6 +137,7 @@ copy src-%DIR%\Release\subversion\svnloo
copy src-%DIR%\Release\subversion\svnserve\svnserve.exe svn-win32-%VER%\bin
copy src-%DIR%\Release\subversion\svnversion\svnversion.exe svn-win32-%VER%\bin
copy src-%DIR%\Release\subversion\svnrdump\svnrdump.exe svn-win32-%VER%\bin
+copy src-%DIR%\Release\subversion\svnmucc\svnmucc.exe svn-win32-%VER%\bin
copy src-%DIR%\Release\subversion\mod_authz_svn\mod_authz_svn.so svn-win32-%VER%\httpd
copy src-%DIR%\Release\subversion\mod_dav_svn\mod_dav_svn.so svn-win32-%VER%\httpd
copy svn-win32-%VER%\bin\intl.dll "%APACHEDIR%\bin"
Modified: subversion/branches/ev2-export/notes/knobs
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/notes/knobs?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/notes/knobs (original)
+++ subversion/branches/ev2-export/notes/knobs Thu May 17 22:45:36 2012
@@ -460,5 +460,10 @@ SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2
advertisement of HTTPv2 protocol support (if any), effectively
causing them to only speak our original HTTP protocol.
+7.7 SVN_SVNMUCC_IS_SVNSYITF
+
+ Scope: 'make install-tools'
+ Purpose: Symlinks $prefix/bin/svnsyitf to $prefix/bin/svnmucc
+
* (TODO: others)
Modified: subversion/branches/ev2-export/subversion/include/private/svn_ra_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/private/svn_ra_private.h?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/private/svn_ra_private.h (original)
+++ subversion/branches/ev2-export/subversion/include/private/svn_ra_private.h Thu May 17 22:45:36 2012
@@ -242,6 +242,45 @@ svn_ra__get_commit_ev2(svn_editor_t **ed
apr_pool_t *scratch_pool);
+/* Similar to #svn_ra_replay_revstart_callback_t, but with an Ev2 editor. */
+typedef svn_error_t *(*svn_ra__replay_revstart_ev2_callback_t)(
+ svn_revnum_t revision,
+ void *replay_baton,
+ svn_editor_t **editor,
+ apr_hash_t *rev_props,
+ apr_pool_t *pool);
+
+/* Similar to #svn_ra_replay_revfinish_callback_t, but with an Ev2 editor. */
+typedef svn_error_t *(*svn_ra__replay_revfinish_ev2_callback_t)(
+ svn_revnum_t revision,
+ void *replay_baton,
+ svn_editor_t *editor,
+ apr_hash_t *rev_props,
+ apr_pool_t *pool);
+
+/* Similar to svn_ra_replay_range(), but uses Ev2 versions of the callback
+ functions. */
+svn_error_t *
+svn_ra__replay_range_ev2(svn_ra_session_t *session,
+ svn_revnum_t start_revision,
+ svn_revnum_t end_revision,
+ svn_revnum_t low_water_mark,
+ svn_boolean_t send_deltas,
+ svn_ra__replay_revstart_ev2_callback_t revstart_func,
+ svn_ra__replay_revfinish_ev2_callback_t revfinish_func,
+ void *replay_baton,
+ apr_pool_t *scratch_pool);
+
+/* Similar to svn_ra_replay(), but with an Ev2 editor. */
+svn_error_t *
+svn_ra__replay_ev2(svn_ra_session_t *session,
+ svn_revnum_t revision,
+ svn_revnum_t low_water_mark,
+ svn_boolean_t send_deltas,
+ svn_editor_t *editor,
+ apr_pool_t *scratch_pool);
+
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/ev2-export/subversion/include/private/svn_repos_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/private/svn_repos_private.h?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/private/svn_repos_private.h (original)
+++ subversion/branches/ev2-export/subversion/include/private/svn_repos_private.h Thu May 17 22:45:36 2012
@@ -104,6 +104,16 @@ svn_repos__get_commit_ev2(svn_editor_t *
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
+svn_error_t *
+svn_repos__replay_ev2(svn_fs_root_t *root,
+ const char *base_dir,
+ svn_revnum_t low_water_mark,
+ svn_boolean_t send_deltas,
+ svn_editor_t *editor,
+ svn_repos_authz_func_t authz_read_func,
+ void *authz_read_baton,
+ apr_pool_t *scratch_pool);
+
#ifdef __cplusplus
}
Modified: subversion/branches/ev2-export/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/merge.c?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/merge.c Thu May 17 22:45:36 2012
@@ -203,9 +203,6 @@ typedef struct merge_cmd_baton_t {
svn_boolean_t ignore_ancestry; /* Are we ignoring ancestry (and by
extension, mergeinfo)? FALSE if
SOURCES_ANCESTRAL is FALSE. */
- svn_boolean_t target_missing_child; /* Whether working copy target of the
- merge is missing any immediate
- children. */
svn_boolean_t reintegrate_merge; /* Whether this is a --reintegrate
merge or not. */
const char *added_path; /* Set to the dir path whenever the
@@ -4073,9 +4070,10 @@ calculate_remaining_ranges(svn_client__m
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
- const char *mergeinfo_path;
- const char *primary_url = (source->loc1->rev < source->loc2->rev)
- ? source->loc2->url : source->loc1->url;
+ const svn_client__pathrev_t *primary_src
+ = (source->loc1->rev < source->loc2->rev) ? source->loc2 : source->loc1;
+ const char *mergeinfo_path = svn_client__pathrev_fspath(primary_src,
+ scratch_pool);
/* Intersection of TARGET_MERGEINFO and the merge history
described by SOURCE. */
apr_array_header_t *target_rangelist;
@@ -4087,8 +4085,6 @@ calculate_remaining_ranges(svn_client__m
SVN_ERR_ASSERT(source->ancestral);
/* Determine which of the requested ranges to consider merging... */
- SVN_ERR(svn_ra__get_fspath_relative_to_root(ra_session, &mergeinfo_path,
- primary_url, result_pool));
/* Set TARGET_RANGELIST to the portion of TARGET_MERGEINFO that refers
to SOURCE (excluding any gap in SOURCE): first get all ranges from
@@ -4231,7 +4227,8 @@ find_gaps_in_merge_source_history(svn_re
svn_revnum_t old_rev = MIN(source->loc1->rev, source->loc2->rev);
const svn_client__pathrev_t *primary_src
= (source->loc1->rev < source->loc2->rev) ? source->loc2 : source->loc1;
- const char *merge_src_fspath;
+ const char *merge_src_fspath = svn_client__pathrev_fspath(primary_src,
+ scratch_pool);
apr_array_header_t *rangelist;
/* Start by assuming there is no gap. */
@@ -4244,8 +4241,6 @@ find_gaps_in_merge_source_history(svn_re
ra_session,
ctx, scratch_pool));
- SVN_ERR(svn_ra__get_fspath_relative_to_root(
- ra_session, &merge_src_fspath, primary_src->url, scratch_pool));
rangelist = apr_hash_get(implicit_src_mergeinfo,
merge_src_fspath,
APR_HASH_KEY_STRING);
@@ -6792,7 +6787,8 @@ do_file_merge(svn_mergeinfo_catalog_t re
svn_merge_range_t *conflicted_range = NULL;
svn_boolean_t inherited = FALSE;
svn_boolean_t is_rollback = (source->loc1->rev > source->loc2->rev);
- const char *primary_url = is_rollback ? source->loc1->url : source->loc2->url;
+ const svn_client__pathrev_t *primary_src
+ = is_rollback ? source->loc1 : source->loc2;
svn_boolean_t honor_mergeinfo = HONOR_MERGEINFO(merge_b);
svn_client__merge_path_t *merge_target = NULL;
apr_pool_t *iterpool = svn_pool_create(scratch_pool);
@@ -6874,7 +6870,7 @@ do_file_merge(svn_mergeinfo_catalog_t re
const char *old_sess_url;
SVN_ERR(svn_client__ensure_ra_session_url(&old_sess_url,
merge_b->ra_session1,
- primary_url,
+ primary_src->url,
iterpool));
SVN_ERR(remove_noop_merge_ranges(&ranges_to_merge,
merge_b->ra_session1,
@@ -7006,13 +7002,10 @@ do_file_merge(svn_mergeinfo_catalog_t re
merge ranges, include the noop ones. */
if (RECORD_MERGEINFO(merge_b) && remaining_ranges->nelts)
{
- const char *mergeinfo_path;
+ const char *mergeinfo_path = svn_client__pathrev_fspath(primary_src,
+ scratch_pool);
apr_array_header_t *filtered_rangelist;
- SVN_ERR(svn_ra__get_fspath_relative_to_root(
- merge_b->ra_session1, &mergeinfo_path, primary_url,
- scratch_pool));
-
/* Filter any ranges from TARGET_WCPATH's own history, there is no
need to record this explicitly in mergeinfo, it is already part
of TARGET_WCPATH's natural history (implicit mergeinfo). */
@@ -8543,8 +8536,6 @@ do_mergeinfo_aware_dir_merge(svn_mergein
the target thanks to depth-first ordering. */
target_merge_path = APR_ARRAY_IDX(notify_b->children_with_mergeinfo, 0,
svn_client__merge_path_t *);
- merge_b->target_missing_child = (target_merge_path->missing_child
- || target_merge_path->switched_child);
/* If we are honoring mergeinfo, then for each item in
NOTIFY_B->CHILDREN_WITH_MERGEINFO, we need to calculate what needs to be
@@ -8753,10 +8744,10 @@ do_mergeinfo_aware_dir_merge(svn_mergein
/* Record mergeinfo where appropriate.*/
if (RECORD_MERGEINFO(merge_b))
{
- const svn_client__pathrev_t *primary_loc
+ const svn_client__pathrev_t *primary_src
= is_rollback ? source->loc1 : source->loc2;
const char *mergeinfo_path
- = svn_client__pathrev_fspath(primary_loc, scratch_pool);
+ = svn_client__pathrev_fspath(primary_src, scratch_pool);
err = record_mergeinfo_for_dir_merge(result_catalog,
&range,
@@ -9014,7 +9005,6 @@ do_merge(apr_hash_t **modified_subtrees,
merge_cmd_baton.same_repos = same_repos;
merge_cmd_baton.mergeinfo_capable = FALSE;
merge_cmd_baton.ctx = ctx;
- merge_cmd_baton.target_missing_child = FALSE;
merge_cmd_baton.reintegrate_merge = reintegrate_merge;
merge_cmd_baton.target = target;
merge_cmd_baton.pool = iterpool;
@@ -11264,9 +11254,9 @@ find_last_merged_location(svn_client__pa
/* Remove any locations that match (a), (b) or (c). */
/* For (a), remove any locations that are in TARGET's mergeinfo. */
- SVN_ERR(svn_mergeinfo_remove(&eligible_locations->history,
- target_mergeinfo, eligible_locations->history,
- scratch_pool));
+ SVN_ERR(svn_mergeinfo_remove2(&eligible_locations->history,
+ target_mergeinfo, eligible_locations->history,
+ TRUE, scratch_pool, scratch_pool));
/* For (b) ... */
/* For (c) ... */
Modified: subversion/branches/ev2-export/subversion/libsvn_fs/editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_fs/editor.c?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_fs/editor.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_fs/editor.c Thu May 17 22:45:36 2012
@@ -268,6 +268,25 @@ can_modify(svn_fs_root_t *txn_root,
}
+/* Can we create a node at FSPATH in TXN_ROOT? If something already exists
+ at that path, then the client is out of date. */
+static svn_error_t *
+can_create(svn_fs_root_t *txn_root,
+ const char *fspath,
+ apr_pool_t *scratch_pool)
+{
+ svn_node_kind_t kind;
+
+ SVN_ERR(svn_fs_check_path(&kind, txn_root, fspath, scratch_pool));
+ if (kind != svn_node_none)
+ return svn_error_createf(SVN_ERR_FS_OUT_OF_DATE, NULL,
+ _("'%s' already exists, so may be out"
+ " of date; try updating"),
+ fspath);
+ return SVN_NO_ERROR;
+}
+
+
/* This implements svn_editor_cb_add_directory_t */
static svn_error_t *
add_directory_cb(void *baton,
@@ -291,7 +310,10 @@ add_directory_cb(void *baton,
SVN_ERR(can_modify(root, fspath, replaces_rev, scratch_pool));
SVN_ERR(svn_fs_delete(root, fspath, scratch_pool));
}
- /* else better not be there! */
+ else
+ {
+ SVN_ERR(can_create(root, fspath, scratch_pool));
+ }
SVN_ERR(svn_fs_make_dir(root, fspath, scratch_pool));
SVN_ERR(add_new_props(root, fspath, props, scratch_pool));
@@ -321,7 +343,10 @@ add_file_cb(void *baton,
SVN_ERR(can_modify(root, fspath, replaces_rev, scratch_pool));
SVN_ERR(svn_fs_delete(root, fspath, scratch_pool));
}
- /* else better not be there! */
+ else
+ {
+ SVN_ERR(can_create(root, fspath, scratch_pool));
+ }
SVN_ERR(svn_fs_make_file(root, fspath, scratch_pool));
@@ -353,7 +378,10 @@ add_symlink_cb(void *baton,
SVN_ERR(can_modify(root, fspath, replaces_rev, scratch_pool));
SVN_ERR(svn_fs_delete(root, fspath, scratch_pool));
}
- /* else better not be there! */
+ else
+ {
+ SVN_ERR(can_create(root, fspath, scratch_pool));
+ }
/* ### we probably need to construct a file with specific contents
### (until the FS grows some symlink APIs) */
@@ -506,6 +534,10 @@ copy_cb(void *baton,
SVN_ERR(can_modify(root, dst_fspath, replaces_rev, scratch_pool));
SVN_ERR(svn_fs_delete(root, dst_fspath, scratch_pool));
}
+ else
+ {
+ SVN_ERR(can_create(root, dst_fspath, scratch_pool));
+ }
SVN_ERR(svn_fs_revision_root(&src_root, svn_fs_root_fs(root), src_revision,
scratch_pool));
@@ -541,6 +573,10 @@ move_cb(void *baton,
SVN_ERR(can_modify(root, dst_fspath, replaces_rev, scratch_pool));
SVN_ERR(svn_fs_delete(root, dst_fspath, scratch_pool));
}
+ else
+ {
+ SVN_ERR(can_create(root, dst_fspath, scratch_pool));
+ }
/* ### would be nice to have svn_fs_move() */
Modified: subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.c?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra/ra_loader.c Thu May 17 22:45:36 2012
@@ -1170,6 +1170,17 @@ svn_error_t *svn_ra_replay(svn_ra_sessio
}
svn_error_t *
+svn_ra__replay_ev2(svn_ra_session_t *session,
+ svn_revnum_t revision,
+ svn_revnum_t low_water_mark,
+ svn_boolean_t send_deltas,
+ svn_editor_t *editor,
+ apr_pool_t *scratch_pool)
+{
+ SVN__NOT_IMPLEMENTED();
+}
+
+svn_error_t *
svn_ra_replay_range(svn_ra_session_t *session,
svn_revnum_t start_revision,
svn_revnum_t end_revision,
@@ -1222,6 +1233,20 @@ svn_ra_replay_range(svn_ra_session_t *se
return err;
}
+svn_error_t *
+svn_ra__replay_range_ev2(svn_ra_session_t *session,
+ svn_revnum_t start_revision,
+ svn_revnum_t end_revision,
+ svn_revnum_t low_water_mark,
+ svn_boolean_t send_deltas,
+ svn_ra__replay_revstart_ev2_callback_t revstart_func,
+ svn_ra__replay_revfinish_ev2_callback_t revfinish_func,
+ void *replay_baton,
+ apr_pool_t *scratch_pool)
+{
+ SVN__NOT_IMPLEMENTED();
+}
+
svn_error_t *svn_ra_has_capability(svn_ra_session_t *session,
svn_boolean_t *has,
const char *capability,
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_neon/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_neon/util.c?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_neon/util.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_neon/util.c Thu May 17 22:45:36 2012
@@ -245,7 +245,12 @@ end_207_element(void *baton, int state,
case ELEM_responsedescription:
if (b->in_propstat)
- svn_stringbuf_set(b->propstat_description, b->cdata->data);
+ {
+ /* Remove leading newline added by DEBUG_CR on server */
+ svn_stringbuf_strip_whitespace(b->cdata);
+
+ svn_stringbuf_set(b->propstat_description, b->cdata->data);
+ }
else
{
if (! svn_stringbuf_isempty(b->description))
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/mergeinfo.c?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/mergeinfo.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/mergeinfo.c Thu May 17 22:45:36 2012
@@ -229,8 +229,6 @@ create_mergeinfo_body(serf_bucket_t **bk
return SVN_NO_ERROR;
}
-/* Request a mergeinfo-report from the URL attached to SESSION,
- and fill in the MERGEINFO hash with the results. */
svn_error_t *
svn_ra_serf__get_mergeinfo(svn_ra_session_t *ra_session,
svn_mergeinfo_catalog_t *catalog,
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h Thu May 17 22:45:36 2012
@@ -1385,6 +1385,7 @@ svn_ra_serf__get_stable_url(const char *
/** RA functions **/
+/* Implements svn_ra__vtable_t.get_log(). */
svn_error_t *
svn_ra_serf__get_log(svn_ra_session_t *session,
const apr_array_header_t *paths,
@@ -1399,6 +1400,7 @@ svn_ra_serf__get_log(svn_ra_session_t *s
void *receiver_baton,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.get_locations(). */
svn_error_t *
svn_ra_serf__get_locations(svn_ra_session_t *session,
apr_hash_t **locations,
@@ -1407,6 +1409,7 @@ svn_ra_serf__get_locations(svn_ra_sessio
const apr_array_header_t *location_revisions,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.get_location_segments(). */
svn_error_t *
svn_ra_serf__get_location_segments(svn_ra_session_t *session,
const char *path,
@@ -1417,6 +1420,7 @@ svn_ra_serf__get_location_segments(svn_r
void *receiver_baton,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.do_diff(). */
svn_error_t *
svn_ra_serf__do_diff(svn_ra_session_t *session,
const svn_ra_reporter3_t **reporter,
@@ -1431,6 +1435,7 @@ svn_ra_serf__do_diff(svn_ra_session_t *s
void *diff_baton,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.do_status(). */
svn_error_t *
svn_ra_serf__do_status(svn_ra_session_t *ra_session,
const svn_ra_reporter3_t **reporter,
@@ -1442,6 +1447,7 @@ svn_ra_serf__do_status(svn_ra_session_t
void *status_baton,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.do_update(). */
svn_error_t *
svn_ra_serf__do_update(svn_ra_session_t *ra_session,
const svn_ra_reporter3_t **reporter,
@@ -1454,6 +1460,7 @@ svn_ra_serf__do_update(svn_ra_session_t
void *update_baton,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.do_switch(). */
svn_error_t *
svn_ra_serf__do_switch(svn_ra_session_t *ra_session,
const svn_ra_reporter3_t **reporter,
@@ -1466,6 +1473,7 @@ svn_ra_serf__do_switch(svn_ra_session_t
void *switch_baton,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.get_file_revs(). */
svn_error_t *
svn_ra_serf__get_file_revs(svn_ra_session_t *session,
const char *path,
@@ -1476,12 +1484,14 @@ svn_ra_serf__get_file_revs(svn_ra_sessio
void *handler_baton,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.get_dated_revision(). */
svn_error_t *
svn_ra_serf__get_dated_revision(svn_ra_session_t *session,
svn_revnum_t *revision,
apr_time_t tm,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.get_commit_editor(). */
svn_error_t *
svn_ra_serf__get_commit_editor(svn_ra_session_t *session,
const svn_delta_editor_t **editor,
@@ -1493,6 +1503,7 @@ svn_ra_serf__get_commit_editor(svn_ra_se
svn_boolean_t keep_locks,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.get_file(). */
svn_error_t *
svn_ra_serf__get_file(svn_ra_session_t *session,
const char *path,
@@ -1502,6 +1513,7 @@ svn_ra_serf__get_file(svn_ra_session_t *
apr_hash_t **props,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.change_rev_prop(). */
svn_error_t *
svn_ra_serf__change_rev_prop(svn_ra_session_t *session,
svn_revnum_t rev,
@@ -1510,6 +1522,7 @@ svn_ra_serf__change_rev_prop(svn_ra_sess
const svn_string_t *value,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.replay(). */
svn_error_t *
svn_ra_serf__replay(svn_ra_session_t *ra_session,
svn_revnum_t revision,
@@ -1519,6 +1532,7 @@ svn_ra_serf__replay(svn_ra_session_t *ra
void *edit_baton,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.replay_range(). */
svn_error_t *
svn_ra_serf__replay_range(svn_ra_session_t *ra_session,
svn_revnum_t start_revision,
@@ -1530,6 +1544,7 @@ svn_ra_serf__replay_range(svn_ra_session
void *replay_baton,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.lock(). */
svn_error_t *
svn_ra_serf__lock(svn_ra_session_t *ra_session,
apr_hash_t *path_revs,
@@ -1539,6 +1554,7 @@ svn_ra_serf__lock(svn_ra_session_t *ra_s
void *lock_baton,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.unlock(). */
svn_error_t *
svn_ra_serf__unlock(svn_ra_session_t *ra_session,
apr_hash_t *path_tokens,
@@ -1547,12 +1563,14 @@ svn_ra_serf__unlock(svn_ra_session_t *ra
void *lock_baton,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.get_lock(). */
svn_error_t *
svn_ra_serf__get_lock(svn_ra_session_t *ra_session,
svn_lock_t **lock,
const char *path,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.get_locks(). */
svn_error_t *
svn_ra_serf__get_locks(svn_ra_session_t *ra_session,
apr_hash_t **locks,
@@ -1560,13 +1578,19 @@ svn_ra_serf__get_locks(svn_ra_session_t
svn_depth_t depth,
apr_pool_t *pool);
-svn_error_t * svn_ra_serf__get_mergeinfo(svn_ra_session_t *ra_session,
- apr_hash_t **mergeinfo,
- const apr_array_header_t *paths,
- svn_revnum_t revision,
- svn_mergeinfo_inheritance_t inherit,
- svn_boolean_t include_descendants,
- apr_pool_t *pool);
+/* Request a mergeinfo-report from the URL attached to SESSION,
+ and fill in the MERGEINFO hash with the results.
+
+ Implements svn_ra__vtable_t.get_mergeinfo().
+ */
+svn_error_t *
+svn_ra_serf__get_mergeinfo(svn_ra_session_t *ra_session,
+ apr_hash_t **mergeinfo,
+ const apr_array_header_t *paths,
+ svn_revnum_t revision,
+ svn_mergeinfo_inheritance_t inherit,
+ svn_boolean_t include_descendants,
+ apr_pool_t *pool);
/* Exchange capabilities with the server, by sending an OPTIONS
* request announcing the client's capabilities, and by filling
@@ -1585,14 +1609,14 @@ svn_ra_serf__exchange_capabilities(svn_r
const char **corrected_url,
apr_pool_t *pool);
-/* Implements the has_capability RA layer function. */
+/* Implements svn_ra__vtable_t.has_capability(). */
svn_error_t *
svn_ra_serf__has_capability(svn_ra_session_t *ra_session,
svn_boolean_t *has,
const char *capability,
apr_pool_t *pool);
-/* Implements the get_deleted_rev RA layer function. */
+/* Implements svn_ra__vtable_t.get_deleted_rev(). */
svn_error_t *
svn_ra_serf__get_deleted_rev(svn_ra_session_t *session,
const char *path,
@@ -1601,6 +1625,18 @@ svn_ra_serf__get_deleted_rev(svn_ra_sess
svn_revnum_t *revision_deleted,
apr_pool_t *pool);
+/* Implements svn_ra__vtable_t.get_repos_root(). */
+svn_error_t *
+svn_ra_serf__get_repos_root(svn_ra_session_t *ra_session,
+ const char **url,
+ apr_pool_t *pool);
+
+/* Implements svn_ra__vtable_t.register_editor_shim_callbacks(). */
+svn_error_t *
+svn_ra_serf__register_editor_shim_callbacks(svn_ra_session_t *session,
+ svn_delta_shim_callbacks_t *callbacks);
+
+
/*** Authentication handler declarations ***/
/**
@@ -1627,16 +1663,14 @@ svn_ra_serf__error_on_status(int status_
const char *path,
const char *location);
-svn_error_t *
-svn_ra_serf__register_editor_shim_callbacks(svn_ra_session_t *session,
- svn_delta_shim_callbacks_t *callbacks);
-
-
+/* ###? */
svn_error_t *
svn_ra_serf__copy_into_spillbuf(svn_spillbuf_t **spillbuf,
serf_bucket_t *bkt,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
+
+/* ###? */
serf_bucket_t *
svn_ra_serf__create_sb_bucket(svn_spillbuf_t *spillbuf,
serf_bucket_alloc_t *allocator,
@@ -1644,12 +1678,6 @@ svn_ra_serf__create_sb_bucket(svn_spillb
apr_pool_t *scratch_pool);
-svn_error_t *
-svn_ra_serf__get_repos_root(svn_ra_session_t *ra_session,
- const char **url,
- apr_pool_t *pool);
-
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/serf.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/serf.c?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/serf.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/serf.c Thu May 17 22:45:36 2012
@@ -51,6 +51,7 @@
#include "ra_serf.h"
+/* Implements svn_ra__vtable_t.get_version(). */
static const svn_version_t *
ra_serf_version(void)
{
@@ -60,12 +61,14 @@ ra_serf_version(void)
#define RA_SERF_DESCRIPTION \
N_("Module for accessing a repository via WebDAV protocol using serf.")
+/* Implements svn_ra__vtable_t.get_description(). */
static const char *
ra_serf_get_description(void)
{
return _(RA_SERF_DESCRIPTION);
}
+/* Implements svn_ra__vtable_t.get_schemes(). */
static const char * const *
ra_serf_get_schemes(apr_pool_t *pool)
{
@@ -332,6 +335,7 @@ svn_ra_serf__progress(void *progress_bat
}
}
+/* Implements svn_ra__vtable_t.open_session(). */
static svn_error_t *
svn_ra_serf__open(svn_ra_session_t *session,
const char **corrected_url,
@@ -438,6 +442,7 @@ svn_ra_serf__open(svn_ra_session_t *sess
return svn_ra_serf__exchange_capabilities(serf_sess, corrected_url, pool);
}
+/* Implements svn_ra__vtable_t.reparent(). */
static svn_error_t *
svn_ra_serf__reparent(svn_ra_session_t *ra_session,
const char *url,
@@ -480,6 +485,7 @@ svn_ra_serf__reparent(svn_ra_session_t *
return SVN_NO_ERROR;
}
+/* Implements svn_ra__vtable_t.get_session_url(). */
static svn_error_t *
svn_ra_serf__get_session_url(svn_ra_session_t *ra_session,
const char **url,
@@ -490,6 +496,7 @@ svn_ra_serf__get_session_url(svn_ra_sess
return SVN_NO_ERROR;
}
+/* Implements svn_ra__vtable_t.get_latest_revnum(). */
static svn_error_t *
svn_ra_serf__get_latest_revnum(svn_ra_session_t *ra_session,
svn_revnum_t *latest_revnum,
@@ -501,6 +508,7 @@ svn_ra_serf__get_latest_revnum(svn_ra_se
latest_revnum, session, pool));
}
+/* Implements svn_ra__vtable_t.rev_proplist(). */
static svn_error_t *
svn_ra_serf__rev_proplist(svn_ra_session_t *ra_session,
svn_revnum_t rev,
@@ -538,6 +546,7 @@ svn_ra_serf__rev_proplist(svn_ra_session
return SVN_NO_ERROR;
}
+/* Implements svn_ra__vtable_t.rev_prop(). */
static svn_error_t *
svn_ra_serf__rev_prop(svn_ra_session_t *session,
svn_revnum_t rev,
@@ -591,6 +600,7 @@ fetch_path_props(apr_hash_t **props,
return SVN_NO_ERROR;
}
+/* Implements svn_ra__vtable_t.check_path(). */
static svn_error_t *
svn_ra_serf__check_path(svn_ra_session_t *ra_session,
const char *rel_path,
@@ -829,6 +839,7 @@ get_dirent_props(apr_uint32_t dirent_fie
return (svn_ra_serf__dav_props_t *) props->elts;
}
+/* Implements svn_ra__vtable_t.stat(). */
static svn_error_t *
svn_ra_serf__stat(svn_ra_session_t *ra_session,
const char *rel_path,
@@ -907,6 +918,7 @@ resource_is_directory(apr_hash_t *props)
return SVN_NO_ERROR;
}
+/* Implements svn_ra__vtable_t.get_dir(). */
static svn_error_t *
svn_ra_serf__get_dir(svn_ra_session_t *ra_session,
apr_hash_t **dirents,
@@ -1053,6 +1065,8 @@ svn_ra_serf__get_repos_root(svn_ra_sessi
case where the root of the repository is not readable.
However, it does not handle the case where we're fetching path not existing
in HEAD of a repository with unreadable root directory.
+
+ Implements svn_ra__vtable_t.get_uuid().
*/
static svn_error_t *
svn_ra_serf__get_uuid(svn_ra_session_t *ra_session,
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c Thu May 17 22:45:36 2012
@@ -844,15 +844,10 @@ end_error(svn_ra_serf__xml_parser_t *par
/* On the server dav_error_response_tag() will add a leading
and trailing newline if DEBUG_CR is defined in mod_dav.h,
so remove any such characters here. */
- apr_size_t len;
- const char *cd = ctx->cdata->data;
- if (*cd == '\n')
- ++cd;
- len = strlen(cd);
- if (len > 0 && cd[len-1] == '\n')
- --len;
+ svn_stringbuf_strip_whitespace(ctx->cdata);
- ctx->error->message = apr_pstrmemdup(ctx->error->pool, cd, len);
+ ctx->error->message = apr_pstrmemdup(ctx->error->pool, ctx->cdata->data,
+ ctx->cdata->len);
ctx->collect_cdata = FALSE;
}
@@ -1148,6 +1143,9 @@ end_207(svn_ra_serf__xml_parser_t *parse
}
if (ctx->in_error && strcmp(name.name, "responsedescription") == 0)
{
+ /* Remove leading newline added by DEBUG_CR on server */
+ svn_stringbuf_strip_whitespace(ctx->cdata);
+
ctx->collect_cdata = FALSE;
ctx->error->message = apr_pstrmemdup(ctx->error->pool, ctx->cdata->data,
ctx->cdata->len);
@@ -2386,7 +2384,8 @@ expat_response_handler(serf_request_t *r
expat_status = XML_Parse(ectx->parser, data, (int)len, 0 /* isFinal */);
if (expat_status == XML_STATUS_ERROR)
- return svn_error_createf(SVN_ERR_XML_MALFORMED, NULL,
+ return svn_error_createf(SVN_ERR_XML_MALFORMED,
+ ectx->inner_error,
_("The %s response contains invalid XML"
" (%d %s)"),
ectx->handler->method,
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/xml.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/xml.c?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/xml.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/xml.c Thu May 17 22:45:36 2012
@@ -637,7 +637,8 @@ svn_ra_serf__xml_cb_start(svn_ra_serf__x
/* Some basic copies to set up the new estate. */
new_xes->state = scan->to_state;
- new_xes->tag = elemname;
+ new_xes->tag.name = apr_pstrdup(new_pool, elemname.name);
+ new_xes->tag.namespace = apr_pstrdup(new_pool, elemname.namespace);
new_xes->custom_close = scan->custom_close;
/* Start with the parent's namespace set. */
Modified: subversion/branches/ev2-export/subversion/libsvn_repos/dump.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_repos/dump.c?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_repos/dump.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_repos/dump.c Thu May 17 22:45:36 2012
@@ -741,10 +741,7 @@ close_directory(void *dir_baton,
hi;
hi = apr_hash_next(hi))
{
- const void *key;
- const char *path;
- apr_hash_this(hi, &key, NULL, NULL);
- path = key;
+ const char *path = svn__apr_hash_index_key(hi);
svn_pool_clear(subpool);
Modified: subversion/branches/ev2-export/subversion/libsvn_repos/replay.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_repos/replay.c?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_repos/replay.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_repos/replay.c Thu May 17 22:45:36 2012
@@ -922,3 +922,16 @@ svn_repos_replay2(svn_fs_root_t *root,
SVN_INVALID_REVNUM, paths,
path_driver_cb_func, &cb_baton, pool);
}
+
+svn_error_t *
+svn_repos__replay_ev2(svn_fs_root_t *root,
+ const char *base_dir,
+ svn_revnum_t low_water_mark,
+ svn_boolean_t send_deltas,
+ svn_editor_t *editor,
+ svn_repos_authz_func_t authz_read_func,
+ void *authz_read_baton,
+ apr_pool_t *scratch_pool)
+{
+ SVN__NOT_IMPLEMENTED();
+}
Propchange: subversion/branches/ev2-export/subversion/svnmucc/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu May 17 22:45:36 2012
@@ -0,0 +1,7 @@
+svnmucc
+svnmucc.exe
+.libs
+*.o
+*~
+.*~
+svnmucc-test-repos
Modified: subversion/branches/ev2-export/subversion/tests/cmdline/commit_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/commit_tests.py?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/commit_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/commit_tests.py Thu May 17 22:45:36 2012
@@ -2877,6 +2877,44 @@ def commit_add_subadd(sbox):
svntest.main.run_svn(None, 'merge', '-c', '-2', './')
svntest.main.run_svn(None, 'commit', '--targets', targets_file, '-mm')
+def commit_danglers(sbox):
+ "verify committing some dangling children fails"
+
+ sbox.build(read_only=True)
+ wc_dir = sbox.wc_dir
+
+ sbox.simple_copy('A','A_copied')
+
+ A_copied = sbox.ospath('A_copied')
+ mu_copied = sbox.ospath('A_copied/mu')
+
+ svntest.main.file_write(mu_copied, "xxxx")
+
+ # We already test for this problem for some time
+ expected_error = "svn: E200009: '.*A_copied' .*exist.*yet.* '.*mu'.*part"
+ svntest.actions.run_and_verify_commit(mu_copied,
+ None,
+ None,
+ expected_error,
+ mu_copied)
+
+ # But now do the same thing via changelist filtering
+ svntest.main.run_svn(None, 'changelist', 'L', mu_copied, sbox.ospath('A/mu'))
+
+ # And try to commit A_copied itself with changelist filtering
+ svntest.actions.run_and_verify_commit(A_copied,
+ None,
+ None,
+ expected_error,
+ A_copied, '--cl', 'L')
+
+ # And on the wcroot
+ svntest.actions.run_and_verify_commit(wc_dir,
+ None,
+ None,
+ expected_error,
+ wc_dir, '--cl', 'L')
+
########################################################################
# Run the tests
@@ -2947,6 +2985,7 @@ test_list = [ None,
commit_multiple_nested_deletes,
commit_incomplete,
commit_add_subadd,
+ commit_danglers,
]
if __name__ == '__main__':
Modified: subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py Thu May 17 22:45:36 2012
@@ -4038,7 +4038,7 @@ def diff_properties_only(sbox):
# Make a property change and a content change to 'iota'
# Only the property change should be displayed by diff --properties-only
sbox.simple_propset('svn:eol-style', 'native', 'iota')
- svntest.main.file_append(sbox.ospath('iota'), 'new text\n')
+ svntest.main.file_append(sbox.ospath('iota'), 'new text')
sbox.simple_commit() # r2
Modified: subversion/branches/ev2-export/subversion/tests/cmdline/prop_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/prop_tests.py?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/prop_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/prop_tests.py Thu May 17 22:45:36 2012
@@ -1740,11 +1740,9 @@ def post_revprop_change_hook(sbox):
svntest.actions.create_failing_hook(repo_dir, 'post-revprop-change',
error_msg)
- # serf/neon/mod_dav_svn splits the "svn: hook failed" line
- expected_error = svntest.verify.RegexOutput([
- '(svn: E165001: |)post-revprop-change hook failed',
- error_msg + "\n",
- ], match_all = False)
+ # serf/neon/mod_dav_svn give SVN_ERR_RA_DAV_REQUEST_FAILED
+ # file/svn give SVN_ERR_REPOS_HOOK_FAILURE
+ expected_error = 'svn: (E175002|E165001).*post-revprop-change hook failed'
svntest.actions.run_and_verify_svn(None, [], expected_error,
'ps', '--revprop', '-r0', 'p', 'v',
Modified: subversion/branches/ev2-export/subversion/tests/cmdline/svnmucc_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/svnmucc_tests.py?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/svnmucc_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/svnmucc_tests.py Thu May 17 22:45:36 2012
@@ -39,7 +39,7 @@ def reject_bogus_mergeinfo(sbox):
sbox.build(create_wc=False)
- expected_error = ".*(E200020.*Invalid revision|E175008.*property change)"
+ expected_error = ".*(E200020.*Invalid revision|E175002.*PROPPATCH)"
# At present this tests the server, but if we ever make svnmucc
# validate the mergeinfo up front then it will only test the client
Modified: subversion/branches/ev2-export/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/svntest/main.py?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/svntest/main.py Thu May 17 22:45:36 2012
@@ -148,13 +148,12 @@ svnsync_binary = os.path.abspath('../../
svnversion_binary = os.path.abspath('../../svnversion/svnversion' + _exe)
svndumpfilter_binary = os.path.abspath('../../svndumpfilter/svndumpfilter' + \
_exe)
+svnmucc_binary=os.path.abspath('../../svnmucc/svnmucc' + _exe)
entriesdump_binary = os.path.abspath('entries-dump' + _exe)
atomic_ra_revprop_change_binary = os.path.abspath('atomic-ra-revprop-change' + \
_exe)
wc_lock_tester_binary = os.path.abspath('../libsvn_wc/wc-lock-tester' + _exe)
wc_incomplete_tester_binary = os.path.abspath('../libsvn_wc/wc-incomplete-tester' + _exe)
-svnmucc_binary=os.path.abspath('../../../tools/client-side/svnmucc/svnmucc' + \
- _exe)
# Location to the pristine repository, will be calculated from test_area_url
# when we know what the user specified for --url.
Modified: subversion/branches/ev2-export/tools/dev/windows-build/Makefile
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/tools/dev/windows-build/Makefile?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/tools/dev/windows-build/Makefile (original)
+++ subversion/branches/ev2-export/tools/dev/windows-build/Makefile Thu May 17 22:45:36 2012
@@ -128,7 +128,7 @@ all2: targetdir
package:
test -d $(SVNDIR)\$(CONFIG)\Subversion\tests\cmdline || mkdir $(SVNDIR)\$(CONFIG)\Subversion\tests\cmdline
test -d $(TARGETDIR)\bin || mkdir $(TARGETDIR)\bin
- for %%i in (svn svnadmin svndumpfilter svnlook svnserve svnsync svnversion svnrdump) do @$(CP) $(CONFIG)\subversion\%%i\%%i.exe $(TARGETDIR)\bin
+ for %%i in (svn svnadmin svndumpfilter svnlook svnserve svnsync svnversion svnrdump svnmucc) do @$(CP) $(CONFIG)\subversion\%%i\%%i.exe $(TARGETDIR)\bin
for %%i in (diff diff3 diff4) do @if exist $(CONFIG)\tools\diff\%%i.exe $(CP) $(CONFIG)\tools\diff\%%i.exe $(TARGETDIR)\bin
$(CP) $(APRDIR)\$(CONFIG)/*.dll $(TARGETDIR)\bin
$(CP) $(APRUTILDIR)\$(CONFIG)/*.dll $(TARGETDIR)\bin
Modified: subversion/branches/ev2-export/win-tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/win-tests.py?rev=1339905&r1=1339904&r2=1339905&view=diff
==============================================================================
--- subversion/branches/ev2-export/win-tests.py (original)
+++ subversion/branches/ev2-export/win-tests.py Thu May 17 22:45:36 2012
@@ -660,8 +660,6 @@ if create_dirs:
baton = copied_execs
for dirpath, dirs, files in os.walk('subversion'):
copy_execs(baton, dirpath, dirs + files)
- for dirpath, dirs, files in os.walk('tools/client-side/svnmucc'):
- copy_execs(baton, dirpath, dirs + files)
except:
os.chdir(old_cwd)
raise