svn team mailing list archive
-
svn team
-
Mailing list archive
-
Message #00053
[Merge] lp:~mdiers/ubuntu/natty/subversion/ppa-proposed into lp:~svn/ubuntu/natty/subversion/ppa
Michael Diers has proposed merging lp:~mdiers/ubuntu/natty/subversion/ppa-proposed into lp:~svn/ubuntu/natty/subversion/ppa.
Requested reviews:
Subversion (svn)
For more details, see:
https://code.launchpad.net/~mdiers/ubuntu/natty/subversion/ppa-proposed/+merge/54325
Merge Debian (1.6.16dfsg-1).
Fixes CVE-2011-0715: Remotely crash mod_dav_svn anonymously via a lock token.
--
https://code.launchpad.net/~mdiers/ubuntu/natty/subversion/ppa-proposed/+merge/54325
Your team Subversion is requested to review the proposed merge of lp:~mdiers/ubuntu/natty/subversion/ppa-proposed into lp:~svn/ubuntu/natty/subversion/ppa.
=== modified file 'CHANGES'
--- CHANGES 2011-01-05 22:59:03 +0000
+++ CHANGES 2011-03-22 11:15:25 +0000
@@ -1,3 +1,31 @@
+Version 1.6.16
+(02 Mar 2011, from /branches/1.6.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.6.16
+
+ User-visible changes:
+ * more improvement to the 'blame -g' memory leak from 1.6.15 (r1041438)
+ * avoid a crash in mod_dav_svn when using locks (r1071239, -307)
+ See CVE-2011-0715, and descriptive advisory at
+ http://subversion.apache.org/security/CVE-2011-0715-advisory.txt
+ * avoid unnecessary globbing for performance (r1068988)
+ * don't add tree conflicts when one already exists (issue #3486)
+ * fix potential crash when requesting mergeinfo (r902467)
+ * don't attempt to resolve prop conflicts in 'merge --dry-run' (r880146)
+ * more fixes for issue #3270.
+
+ Developer-visible changes:
+ * ensure report_info_t is properly initialized by ra_serf (r1058722)
+ * locate errors properly on a malfunction (r1053208)
+ * fix output param timing of svn_fs_commit_txn() on fsfs (r1051751)
+ * for svn_fs_commit_txn(), set invalid rev on failed commit (r1051632, -8)
+ * fix sporadic Ruby bindings test failures (r1038792)
+ * fix JavaHL JVM object leak when dumping large revisions (r947006)
+ * use Perl to resolve symlinks when building swig-pl (r1039040)
+ * allow Perl bindings to build within a symlinked working copy (r1036534)
+ * don't overwrite the LD_LIBRARY_PATH during make check-swig-pl (r946355)
+ * improve unit tests for some fs functions (r1051744, -5, -3185, -241)
+
+
Version 1.6.15
(26 Nov 2010, from /branches/1.6.x)
http://svn.apache.org/repos/asf/subversion/tags/1.6.15
@@ -444,6 +472,32 @@
* fix building Ruby bindings with Ruby 1.9 (r35852, r35883)
+Version 1.5.8
+(?? ??? 2010, from /branches/1.5.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.5.8
+
+ User-visible changes:
+ * fix proxying of LOCK and UNLOCK requests with WebDAV proxies (r36159)
+ * improve performance of --ignore-ancestry merges (r36256)
+ * avoid crash with when using subtree mergeinfo (r36613, -13, -31, -41)
+ * improve merge correctness with non-inheritable mergeinfo (r36789)
+ * fixed: repeated mergeinfo of conflicting properties fails (issue #3250)
+ * fix segfault in wc->URL copy (r37646, -56)
+ * make 'svn up --set-depth infinity' expand shallow subtrees (r37169)
+ * make default depth of 'svn merge' infinity (r37156)
+ * error if attempting to reintegrate to/from the repo root (r37385)
+ * improve memory performance in 'svn merge' (issue #3393)
+ * fixed: 'SVNPathAuthz short_circuit' unsolicited read access (issue #3695)
+ See CVE-2010-3315, and descriptive advisory at
+ http://subversion.apache.org/security/CVE-2010-3315-advisory.txt
+ * prevent crash in mod_dav_svn when using SVNParentPath (r1033166)
+
+ Developer-visible changes:
+ * fix pointer dereference (r36783)
+ * fix error leak (r36860)
+ * make basic_tests 12 compatible with Windows and Python 2.5+ (r35930)
+
+
Version 1.5.7
(06 Aug 2009, from /branches/1.5.x)
http://svn.apache.org/repos/asf/subversion/tags/1.5.7
=== modified file 'Makefile.in'
--- Makefile.in 2011-01-05 22:59:03 +0000
+++ Makefile.in 2011-03-22 11:15:25 +0000
@@ -684,10 +684,16 @@
$(SWIG_PL_DIR)/native/Makefile: $(SWIG_PL_DIR)/native/Makefile.PL
cd $(SWIG_PL_DIR)/native; $(PERL) Makefile.PL
+# There is a "readlink -f" command on some systems for the same purpose,
+# but it's not as portable (e.g. Mac OS X doesn't have it). These should
+# only be used where Python/Perl are known to be available.
+READLINK_PY=$(PYTHON) -c 'import sys,os; print(os.path.realpath(sys.argv[1]))'
+READLINK_PL=$(PERL) -e 'use Cwd; print Cwd::realpath(shift)'
+
swig-pl_DEPS = autogen-swig-pl libsvn_swig_perl \
$(SWIG_PL_DIR)/native/Makefile
swig-pl: $(swig-pl_DEPS)
- if test "$(SWIG_PL_DIR)" != "$(SWIG_PL_SRC_DIR)"; then \
+ if test "`$(READLINK_PL) $(SWIG_PL_DIR)`" != "`$(READLINK_PL) $(SWIG_PL_SRC_DIR)`"; then \
ln -sf $(SWIG_PL_SRC_DIR)/native/*.c $(SWIG_PL_DIR)/native; \
fi
cd $(SWIG_PL_DIR)/native; $(MAKE) OPTIMIZE="" OTHERLDFLAGS="$(SWIG_LDFLAGS)"
=== modified file 'README.Debian-tarball'
--- README.Debian-tarball 2011-01-05 22:59:03 +0000
+++ README.Debian-tarball 2011-03-22 11:15:25 +0000
@@ -1,4 +1,4 @@
-This tarball is the same as official subversion-1.6.15.tar.gz,
+This tarball is the same as official subversion-1.6.16.tar.gz,
except that several unlicensed or unclearly-licensed files were
removed:
@@ -12,4 +12,4 @@
contrib/server-side/backup-recipe.sh
contrib/server-side/load_repo_with_mergesensitive_copy.sh
-Max Bowsher, 5 Jan 2011
+Peter Samuelson, 25 Feb 2011
=== modified file 'configure'
--- configure 2011-01-05 22:59:03 +0000
+++ configure 2011-03-22 11:15:25 +0000
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.64 for subversion 1.6.15.
+# Generated by GNU Autoconf 2.64 for subversion 1.6.16.
#
# Report bugs to <http://subversion.tigris.org/>.
#
@@ -703,8 +703,8 @@
# Identity of this package.
PACKAGE_NAME='subversion'
PACKAGE_TARNAME='subversion'
-PACKAGE_VERSION='1.6.15'
-PACKAGE_STRING='subversion 1.6.15'
+PACKAGE_VERSION='1.6.16'
+PACKAGE_STRING='subversion 1.6.16'
PACKAGE_BUGREPORT='http://subversion.tigris.org/'
PACKAGE_URL=''
@@ -1532,7 +1532,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures subversion 1.6.15 to adapt to many kinds of systems.
+\`configure' configures subversion 1.6.16 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1598,7 +1598,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of subversion 1.6.15:";;
+ short | recursive ) echo "Configuration of subversion 1.6.16:";;
esac
cat <<\_ACEOF
@@ -1784,7 +1784,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-subversion configure 1.6.15
+subversion configure 1.6.16
generated by GNU Autoconf 2.64
Copyright (C) 2009 Free Software Foundation, Inc.
@@ -2414,7 +2414,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by subversion $as_me 1.6.15, which was
+It was created by subversion $as_me 1.6.16, which was
generated by GNU Autoconf 2.64. Invocation command line was
$ $0 $@
@@ -2787,8 +2787,8 @@
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Subversion 1.6.15" >&5
-$as_echo "$as_me: Configuring Subversion 1.6.15" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Subversion 1.6.16" >&5
+$as_echo "$as_me: Configuring Subversion 1.6.16" >&6;}
abs_srcdir="`cd $srcdir && pwd`"
@@ -26819,7 +26819,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by subversion $as_me 1.6.15, which was
+This file was extended by subversion $as_me 1.6.16, which was
generated by GNU Autoconf 2.64. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -26883,7 +26883,7 @@
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-subversion config.status 1.6.15
+subversion config.status 1.6.16
configured by $0, generated by GNU Autoconf 2.64,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
=== modified file 'debian/changelog'
--- debian/changelog 2011-01-05 23:01:25 +0000
+++ debian/changelog 2011-03-22 11:15:25 +0000
@@ -1,3 +1,28 @@
+subversion (1.6.16dfsg-1svn1) natty; urgency=high
+
+ * Merge with Debian unstable. Remaining changes:
+ - Create pot file on build.
+ - Build a python-subversion-dbg package.
+ - (Build-)depend on default-jre-headless/-jdk.
+ - Do not apply java-build patch.
+ - debian/rules: Manually create the doxygen output directory, otherwise
+ we get weird build failures when running parallel builds.
+ - Disable the serf backend because serf is in universe.
+ - Fix FTBFS against Python 2.7 by disabling some problematic tests.
+
+ -- Michael Diers <mdiers@xxxxxxxx> Tue, 22 Mar 2011 11:57:19 +0100
+
+subversion (1.6.16dfsg-1) unstable; urgency=high
+
+ * New upstream version.
+ - Fixes CVE-2011-0715: Remotely crash mod_dav_svn anonymously via a
+ lock token.
+ * patches/change-range: New patch to support -cA-B syntax on command line.
+ * Stop using svn-make-config.c; we can do the same just by running svn
+ itself in a controlled home directory. Delete debian/tools/.
+
+ -- Peter Samuelson <peter@xxxxxxxx> Thu, 03 Mar 2011 10:55:42 -0600
+
subversion (1.6.15dfsg~ppa-0svn1) natty; urgency=low
* Create a PPA build, merging:
@@ -8,10 +33,42 @@
-- Max Bowsher <maxb@xxxxxxx> Wed, 05 Jan 2011 23:01:20 +0000
+subversion (1.6.12dfsg-4ubuntu1) natty; urgency=low
+
+ * Merge with Debian unstable. Remaining changes:
+ - Create pot file on build.
+ - Build a python-subversion-dbg package.
+ - (Build-)depend on default-jre-headless/-jdk.
+ - Do not apply java-build patch.
+ - debian/rules: Manually create the doxygen output directory, otherwise
+ we get weird build failures when running parallel builds.
+ - Disable the serf backend because serf is in universe.
+ - Don't override LD_LIBRARY_PATH completely but prepend to it as to not
+ break fakeroot.
+ - Fix FTBFS against Python 2.7 by disabling some problematic tests.
+ - debian/tools/Makefile:
+ + Add APR_LIBS and use it when linking svn-make-config
+ + svn_config_ensure() moved from libsvn_client/libsvn_client-1.la to
+ libsvn_subr/libsvn_subr-1.la.
+
+ -- Michael Bienia <geser@xxxxxxxxxx> Fri, 28 Jan 2011 14:14:19 +0100
+
+subversion (1.6.12dfsg-4) unstable; urgency=high
+
+ * patches/loosen-sqlite-version-check: New patch: Relax the SQLite
+ version check, to match the Debian sqlite3 packaging.
+ (Closes: #608925)
+ * patches/cve-2010-4539: New patch for CVE-2010-4539, fixing a remotely
+ triggered crash in mod_dav_svn involving use of the SVNParentPath
+ feature. (Closes: #608989)
+
+ -- Peter Samuelson <peter@xxxxxxxx> Wed, 05 Jan 2011 10:43:01 -0600
+
subversion (1.6.12dfsg-3) unstable; urgency=medium
* Apply two patches from upstream 1.6.15:
- - patches/server-memleak: New patch: fix some server-side memory leaks.
+ - patches/server-memleak: New patch: fix some server-side memory
+ leaks, including CVE-2010-4644.
- patches/no-wc1.7-check: New patch: Stop checking for being inside a
1.7 working copy. The value is too low and the performance penalty
too high.
@@ -567,35 +624,6 @@
-- Matthias Klose <doko@xxxxxxxxxx> Wed, 30 Jan 2008 12:45:05 +0100
-subversion (1.4.6dfsg1-1) unstable; urgency=low
-
- * New upstream version.
- * Build with db 4.6, to match apr-util.
- * patches/svn-clean-manpage: New patch, fix a small typo. (Closes: #441827)
- * patches/neon27: New patch from upstream trunk to support neon 0.27.
- - control: build-depend on libneon27-dev.
- - rules: no longer --disable-neon-version-check.
- * patches/ruby-newswig: Support swig 1.3.33. (Closes: #453166)
- * patches/python-memleak: New patch to fix a serious memory leak in the
- Python bindings. Thanks to Jelmer Vernooij. (Closes: #428755)
- * control: Policy 3.7.3.
- * control: spell 'Source-Version' as 'binary:Version' for political
- correctness. (Or for clarity.)
- * control: add appropriate Vcs-Svn and Vcs-Browser fields.
- * control: subversion-tools Recommends: rsync. (Closes: #459023)
- * patches/svn2cl: update svn2cl to 0.9 (from upstream trunk).
- * patches/commit-email: use original 'sendmail' commit-email.pl mode,
- rather than the direct SMTP feature. (Closes: #447824)
- * rules: do not run 'dh_testroot' or 'make extraclean' in clean rule.
- * rules: rewrite DEB_BUILD_OPTIONS support; remove 'notest' synonym, as
- the world seems to be standardizing on 'nocheck'.
- * rules: remove 'DEB_BUILD_OPTIONS=-j[N]' support, add support for the
- new 'dpkg-buildpackage -j[N]' feature.
- * rules: add an option to disable ruby bindings. Though it turns out
- we don't need it ... yet.
-
- -- Peter Samuelson <peter@xxxxxxxx> Mon, 11 Feb 2008 23:49:02 -0600
-
subversion (1.4.4dfsg1-1ubuntu5) hardy; urgency=medium
* Add debian/patches/python-memleak: Fix major memory leak in the
=== modified file 'debian/patches/build-fixes'
--- debian/patches/build-fixes 2010-01-27 01:57:47 +0000
+++ debian/patches/build-fixes 2011-03-22 11:15:25 +0000
@@ -1,6 +1,6 @@
--- a/build/generator/swig/checkout_swig_header.py
+++ b/build/generator/swig/checkout_swig_header.py
-@@ -20,15 +20,14 @@
+@@ -20,15 +20,14 @@ class Generator(generator.swig.Generator
def write_makefile_rules(self, makefile):
"""Write makefile rules to checkout files"""
@@ -22,7 +22,7 @@
% " ".join(checkout_locations))
--- a/Makefile.in
+++ b/Makefile.in
-@@ -249,14 +249,14 @@
+@@ -249,14 +249,14 @@ INSTALL_EXTRA_SWIG_PY=\
# The path to generated and complementary source files for the SWIG
# bindings.
@@ -42,7 +42,7 @@
### Automate JAR creation using Makefile generator's javahl-java.jar
### property. Enhance generator to support JAR installation.
-@@ -532,6 +532,7 @@
+@@ -537,6 +537,7 @@ doc: doc-misc-docs doc-api doc-javahl
# Generate API documentation for the C libraries.
### This could also generate POD for swig-perl, etc.
doc-api:
@@ -50,16 +50,7 @@
( cd $(top_srcdir) && \
sed "s,\(OUTPUT_DIRECTORY *= *\),\1$(abs_builddir)/," \
doc/doxygen.conf | doxygen - )
-@@ -682,7 +683,7 @@
- swig-pl_DEPS = autogen-swig-pl libsvn_swig_perl \
- $(SWIG_PL_DIR)/native/Makefile
- swig-pl: $(swig-pl_DEPS)
-- if test "$(SWIG_PL_DIR)" != "$(SWIG_PL_SRC_DIR)"; then \
-+ if test "$$(cd $(SWIG_PL_DIR);pwd)" != "$(SWIG_PL_SRC_DIR)"; then \
- ln -sf $(SWIG_PL_SRC_DIR)/native/*.c $(SWIG_PL_DIR)/native; \
- fi
- cd $(SWIG_PL_DIR)/native; $(MAKE) OPTIMIZE="" OTHERLDFLAGS="$(SWIG_LDFLAGS)"
-@@ -705,8 +706,7 @@
+@@ -716,8 +717,7 @@ clean-swig-pl:
fi
for d in $(SWIG_PL_DIR)/libsvn_swig_perl; \
do \
@@ -69,7 +60,7 @@
done
if [ -f "$(SWIG_PL_DIR)/native/Makefile" ]; then \
cd $(SWIG_PL_DIR)/native; $(MAKE) clean; \
-@@ -739,7 +739,7 @@
+@@ -750,7 +750,7 @@ clean-swig-py:
fi
for d in $(SWIG_PY_DIR) $(SWIG_PY_DIR)/libsvn_swig_py; \
do \
@@ -78,7 +69,7 @@
done
find $(SWIG_PY_SRC_DIR) $(SWIG_PY_DIR) -name "*.pyc" -exec rm {} ';'
-@@ -763,8 +763,7 @@
+@@ -774,8 +774,7 @@ clean-swig-rb:
fi
for d in $(SWIG_RB_DIR) $(SWIG_RB_DIR)/libsvn_swig_ruby; \
do \
@@ -90,7 +81,7 @@
extraclean-swig-rb: clean-swig-rb
--- a/build/generator/gen_make.py
+++ b/build/generator/gen_make.py
-@@ -183,9 +183,9 @@
+@@ -183,9 +183,9 @@ class Generator(gen_base.GeneratorBase):
source_dir = build_path_dirname(source)
opts = self.swig.opts[objname.lang]
if not self.release_mode:
@@ -103,7 +94,7 @@
)
self.ofile.write('\n')
-@@ -456,11 +456,11 @@
+@@ -456,11 +456,11 @@ class Generator(gen_base.GeneratorBase):
self.ofile.write('%s: %s\n' % (objname, deps))
cmd = objname.compile_cmd
if cmd:
@@ -120,7 +111,7 @@
--- a/build/generator/gen_base.py
+++ b/build/generator/gen_base.py
-@@ -284,7 +284,8 @@
+@@ -284,7 +284,8 @@ class SourceFile(DependencyNode):
class SWIGSource(SourceFile):
def __init__(self, filename):
@@ -132,7 +123,7 @@
lang_abbrev = {
--- a/build/generator/swig/header_wrappers.py
+++ b/build/generator/swig/header_wrappers.py
-@@ -32,7 +32,7 @@
+@@ -32,7 +32,7 @@ class Generator(generator.swig.Generator
"""Write makefile rules for generating SWIG wrappers for Subversion
header files."""
wrapper_fnames = []
@@ -143,7 +134,7 @@
for fname in self.includes:
--- a/configure.ac
+++ b/configure.ac
-@@ -1010,6 +1010,11 @@
+@@ -1010,6 +1010,11 @@ SVN_CONFIG_SCRIPT(packages/solaris/pkgin
AC_SUBST(SVN_CONFIG_SCRIPT_FILES)
AC_OUTPUT
@@ -157,7 +148,7 @@
--- a/build.conf
+++ b/build.conf
-@@ -648,13 +648,14 @@
+@@ -648,13 +648,14 @@ libs = libsvn_test libsvn_repos libsvn_f
# ----------------------------------------------------------------------------
# Tests for libsvn_subr
=== added file 'debian/patches/change-range'
--- debian/patches/change-range 1970-01-01 00:00:00 +0000
+++ debian/patches/change-range 2011-03-22 11:15:25 +0000
@@ -0,0 +1,88 @@
+Support -cA-B syntax on command line, from upstream trunk r1004727,1004746.
+This is pure convenience. -c12,15-20,25 is equivalent to -c12 -r14:20 -c25.
+
+
+--- a/subversion/svn/main.c
++++ b/subversion/svn/main.c
+@@ -1212,7 +1212,7 @@
+ case 'c':
+ {
+ char *end;
+- svn_revnum_t changeno;
++ svn_revnum_t changeno, changeno_end;
+ svn_opt_revision_range_t *range;
+ apr_array_header_t *change_revs =
+ svn_cstring_split(opt_arg, ", \n\r\t\v", TRUE, pool);
+@@ -1236,7 +1236,22 @@
+ ### "{DATE}" and the special words. */
+ while (*change_str == 'r')
+ change_str++;
+- changeno = strtol(change_str, &end, 10);
++ changeno = changeno_end = strtol(change_str, &end, 10);
++ if (end != change_str && *end == '-')
++ {
++ if (changeno < 0)
++ {
++ err = svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
++ _("Negative number in range (%s)"
++ " not supported with -c"),
++ change_str);
++ return svn_cmdline_handle_exit_error(err, pool, "svn: ");
++ }
++ change_str = end+1;
++ while (*change_str == 'r')
++ change_str++;
++ changeno_end = strtol(change_str, &end, 10);
++ }
+ if (end == change_str || *end != '\0')
+ {
+ err = svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+@@ -1254,19 +1269,28 @@
+
+ /* Figure out the range:
+ -c N -> -r N-1:N
+- -c -N -> -r N:N-1 */
+- range = apr_palloc(pool, sizeof(*range));
++ -c -N -> -r N:N-1
++ -c M-N -> -r M-1:N for M < N
++ -c M-N -> -r M:N-1 for M > N
++ -c -M-N -> error (too confusing/no valid use case)
++ */
+ if (changeno > 0)
+ {
+- range->start.value.number = changeno - 1;
+- range->end.value.number = changeno;
++ if (changeno <= changeno_end)
++ changeno--;
++ else
++ changeno_end--;
+ }
+ else
+ {
+ changeno = -changeno;
+- range->start.value.number = changeno;
+- range->end.value.number = changeno - 1;
++ changeno_end = changeno - 1;
+ }
++
++ range = apr_palloc(pool, sizeof(*range));
++ range->start.value.number = changeno;
++ range->end.value.number = changeno_end;
++
+ opt_state.used_change_arg = TRUE;
+ range->start.kind = svn_opt_revision_number;
+ range->end.kind = svn_opt_revision_number;
+--- a/subversion/svn/log-cmd.c
++++ b/subversion/svn/log-cmd.c
+@@ -481,9 +481,9 @@
+ range = APR_ARRAY_IDX(opt_state->revision_ranges, i,
+ svn_opt_revision_range_t *);
+ if (range->start.value.number < range->end.value.number)
+- range->start = range->end;
++ range->start.value.number++;
+ else
+- range->end = range->start;
++ range->end.value.number++;
+ }
+ }
+
=== added file 'debian/patches/loosen-sqlite-version-check'
--- debian/patches/loosen-sqlite-version-check 1970-01-01 00:00:00 +0000
+++ debian/patches/loosen-sqlite-version-check 2011-03-22 11:15:25 +0000
@@ -0,0 +1,18 @@
+The actual ABI compatibility of sqlite3 doesn't seem to depend on the
+patchlevel (the x in 3.7.x), so omit that in our sanity check here.
+
+This matters in Debian because the sqlite3 library package exports a
+slightly more liberal shlibs file than the library version itself.
+
+
+--- a/subversion/libsvn_subr/sqlite.c
++++ b/subversion/libsvn_subr/sqlite.c
+@@ -486,7 +486,7 @@ static volatile svn_atomic_t sqlite_init
+ static svn_error_t *
+ init_sqlite(void *baton, apr_pool_t *pool)
+ {
+- if (sqlite3_libversion_number() < SQLITE_VERSION_NUMBER) {
++ if (sqlite3_libversion_number()/1000 < SQLITE_VERSION_NUMBER/1000) {
+ return svn_error_createf(SVN_ERR_SQLITE_ERROR, NULL,
+ _("SQLite compiled for %s, but running with %s"),
+ SQLITE_VERSION, sqlite3_libversion());
=== modified file 'debian/patches/series'
--- debian/patches/series 2011-01-05 23:01:25 +0000
+++ debian/patches/series 2011-03-22 11:15:25 +0000
@@ -21,3 +21,5 @@
no-dbus-spam
svn2cl-upstream
kwallet-wid
+loosen-sqlite-version-check
+change-range
=== modified file 'debian/rules'
--- debian/rules 2011-01-05 22:45:51 +0000
+++ debian/rules 2011-03-22 11:15:25 +0000
@@ -156,7 +156,7 @@
dh_testdir
test -e patches || ln -s debian/patches patches
- mkdir -p $(DEB_BUILDDIR)
+ mkdir -p $(DEB_BUILDDIR) $(HOME)
cd $(DEB_BUILDDIR) && \
PYTHON=/usr/bin/python RUBY=/usr/bin/$(RUBY) \
$(CURDIR)/configure $(confflags)
@@ -208,6 +208,8 @@
$(call allpydbg, $(MAKE_B) -j1 autogen-swig)
ln -sf python$(PYDEFAULT) $(PY_DIR)
+$(MAKE_B) all tools
+ # Run svn once, to make sure it populates $(HOME)/.subversion/*
+ $(DEB_BUILDDIR)/subversion/svn/svn --version > /dev/null
$(call allpy, \
$(MAKE_B) swig-py PYTHON=python$$v PYVER=$$v \
PYTHON_INCLUDES=-I/usr/include/python$$v \
@@ -266,7 +268,6 @@
dh_testdir
dh_clean
$(RM) patches
- $(MAKE) -C debian/tools clean
! [ -f $(DEB_BUILDDIR)/Makefile ] || $(MAKE_B) extraclean-swig distclean
$(RM) -r $(DEB_BUILDDIR)
$(RM) build-outputs.mk gen-make.opts subversion/svn_private_config.h.in
@@ -364,12 +365,6 @@
javahl_javahdir=/usr/include/svn-javahl
endif
- # Create our default configuration files to be installed in
- # /etc/subversion/
- $(MAKE) -C debian/tools \
- LD_LIBRARY_PATH="$(CURDIR)/debian/tmp/usr/lib$${LD_LIBRARY_PATH:+:$$LD_LIBRARY_PATH}" \
- DEB_SRCDIR=$(CURDIR) DEB_BUILDDIR=$(CURDIR)/$(DEB_BUILDDIR)
-
$(MAKE_B) install-swig-pl-lib \
DESTDIR=$(CURDIR)/debian/tmp
$(MAKE) -C $(PERL_DIR) install \
=== modified file 'debian/subversion.install'
--- debian/subversion.install 2009-06-06 22:57:04 +0000
+++ debian/subversion.install 2011-03-22 11:15:25 +0000
@@ -4,7 +4,7 @@
debian/tmp/usr/share/man/man5 usr/share/man
debian/tmp/usr/share/man/man8 usr/share/man
-debian/tools/svn-defaults/config etc/subversion
-debian/tools/svn-defaults/servers etc/subversion
+BUILD/dummy_home/.subversion/config etc/subversion
+BUILD/dummy_home/.subversion/servers etc/subversion
contrib/client-side/emacs/psvn.el usr/share/emacs/site-lisp
debian/etc/50psvn.el etc/emacs/site-start.d
=== removed directory 'debian/tools'
=== removed file 'debian/tools/Makefile'
--- debian/tools/Makefile 2010-11-20 11:21:18 +0000
+++ debian/tools/Makefile 1970-01-01 00:00:00 +0000
@@ -1,21 +0,0 @@
-APR_CFLAGS = `apr-config --cppflags --includes --cflags`
-APR_LIBS = `apr-config --ldflags --link-ld --libs`
-SVN_INC = -I$(DEB_SRCDIR)/subversion/include
-CFLAGS += -Wall \
- $(SVN_INC) \
- $(APR_CFLAGS)
-
-all: default-config
-
-default-config: clean svn-make-config
- ./svn-make-config
-
-svn-make-config: svn-make-config.o
- libtool --mode=link gcc $(APR_LIBS) svn-make-config.o $(DEB_BUILDDIR)/subversion/libsvn_subr/libsvn_subr-1.la -o svn-make-config
-
-clean:
- $(RM) svn-make-config svn-make-config.o
- rm -rf svn-defaults
- rm -rf .libs
-
-.PHONY: clean
=== removed file 'debian/tools/README'
--- debian/tools/README 2005-06-29 13:09:32 +0000
+++ debian/tools/README 1970-01-01 00:00:00 +0000
@@ -1,5 +0,0 @@
-The files in this directory are used to create the default
-/etc/subversion/config and /etc/subversion/servers on Debian systems. The
-default configuration files are created by the subversion libraries. This
-ensures that new configuration options and changes to existing options are
-reflected in the default /etc/subversion/ files in a timely manner.
=== removed file 'debian/tools/svn-make-config.c'
--- debian/tools/svn-make-config.c 2005-06-29 13:09:32 +0000
+++ debian/tools/svn-make-config.c 1970-01-01 00:00:00 +0000
@@ -1,60 +0,0 @@
-/*
- * Subversion will populate the user's ~/.subversion/ directory with
- * default configuration files if the directory does not exist. Some
- * of these same files are useful to system administrators who want to
- * put files in /etc/subversion/ to control site-wide configuration.
- * This program creates a default set of subversion config files in
- * the current directory.
- */
-
-#include <apr.h>
-#include <apr_general.h>
-#include <apr_pools.h>
-#include <apr_file_io.h>
-#include <apr_file_info.h>
-#include <svn_config.h>
-#include <stdio.h>
-
-#define ROOT_DIR "svn-defaults"
-
-int
-main(int argc, char *argv[])
-{
- char *root;
- apr_pool_t *pool;
- apr_file_t *fptr;
- apr_finfo_t finfo;
-
- apr_initialize();
- apr_pool_create(&pool, NULL);
-
- apr_file_open_stderr(&fptr, pool);
-
- if (argc != 1)
- {
- apr_file_printf(fptr, "Usage: %s\n", argv[0]);
- apr_file_printf(fptr, "Create a set of default config files"
- "in $PWD/" ROOT_DIR "\n");
- exit(0);
- }
-
- root = apr_psprintf(pool, "%s/%s", getenv("PWD"), ROOT_DIR);
-
- if (!root)
- {
- apr_file_printf(fptr, "apr_psprintf failed\n");
- exit(1);
- }
-
- if (APR_SUCCESS == apr_stat(&finfo, root, 0, pool))
- {
- apr_file_printf(fptr, "%s exists\n", root);
- exit(1);
- }
-
- svn_config_ensure(root, pool);
-
- apr_terminate();
-
- return 0;
-}
=== modified file 'subversion/bindings/javahl/native/Outputer.cpp'
--- subversion/bindings/javahl/native/Outputer.cpp 2009-06-06 22:57:04 +0000
+++ subversion/bindings/javahl/native/Outputer.cpp 2011-03-22 11:15:25 +0000
@@ -101,6 +101,10 @@
if (JNIUtil::isJavaExceptionThrown())
return SVN_NO_ERROR;
+ env->DeleteLocalRef(data);
+ if (JNIUtil::isJavaExceptionThrown())
+ return SVN_NO_ERROR;
+
// return the number of bytes written
*len = written;
=== modified file 'subversion/bindings/swig/perl/native/Makefile.PL.in'
--- subversion/bindings/swig/perl/native/Makefile.PL.in 2009-11-17 02:16:23 +0000
+++ subversion/bindings/swig/perl/native/Makefile.PL.in 2011-03-22 11:15:25 +0000
@@ -92,7 +92,7 @@
my $module_c_files = join (' ',map { "svn_$_.c"} @modules);
my $module_make_commands = join ('',map {"\t\$(MAKE) -f Makefile.$_\n"} @modules);
- my $fullperlrun = "$apr_shlib_path_var=" . join(':',@ldpaths);
+ my $fullperlrun = "$apr_shlib_path_var=\${$apr_shlib_path_var}:" . join(':',@ldpaths);
return <<"EOPOST";
all :: modules
=== modified file 'subversion/bindings/swig/perl/native/core.c'
--- subversion/bindings/swig/perl/native/core.c 2011-01-05 22:59:03 +0000
+++ subversion/bindings/swig/perl/native/core.c 2011-03-22 11:15:25 +0000
@@ -33630,12 +33630,12 @@
} while(0) /*@SWIG@*/;
/*@SWIG:/home/hwright/dev/release/roll/prefix/share/swig/1.3.36/perl5/perltypemaps.swg,64,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "SVN_VER_PATCH", TRUE | 0x2 | GV_ADDMULTI);
- sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(15)));
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(16)));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
/*@SWIG:/home/hwright/dev/release/roll/prefix/share/swig/1.3.36/perl5/perltypemaps.swg,64,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "SVN_VER_MICRO", TRUE | 0x2 | GV_ADDMULTI);
- sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(15)));
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(16)));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
/*@SWIG:/home/hwright/dev/release/roll/prefix/share/swig/1.3.36/perl5/perltypemaps.swg,64,%set_constant@*/ do {
@@ -33645,7 +33645,7 @@
} while(0) /*@SWIG@*/;
/*@SWIG:/home/hwright/dev/release/roll/prefix/share/swig/1.3.36/perl5/perltypemaps.swg,64,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "SVN_VER_TAG", TRUE | 0x2 | GV_ADDMULTI);
- sv_setsv(sv, SWIG_FromCharPtr(" (r1038135)"));
+ sv_setsv(sv, SWIG_FromCharPtr(" (r1073529)"));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
/*@SWIG:/home/hwright/dev/release/roll/prefix/share/swig/1.3.36/perl5/perltypemaps.swg,64,%set_constant@*/ do {
@@ -33655,7 +33655,7 @@
} while(0) /*@SWIG@*/;
/*@SWIG:/home/hwright/dev/release/roll/prefix/share/swig/1.3.36/perl5/perltypemaps.swg,64,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "SVN_VER_REVISION", TRUE | 0x2 | GV_ADDMULTI);
- sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(1038135)));
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(1073529)));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
/*@SWIG:/home/hwright/dev/release/roll/prefix/share/swig/1.3.36/perl5/perltypemaps.swg,64,%set_constant@*/ do {
=== modified file 'subversion/bindings/swig/python/core.c'
--- subversion/bindings/swig/python/core.c 2011-01-05 22:59:03 +0000
+++ subversion/bindings/swig/python/core.c 2011-03-22 11:15:25 +0000
@@ -25569,12 +25569,12 @@
SWIG_Python_SetConstant(d, "SVN_ALLOCATOR_RECOMMENDED_MAX_FREE",SWIG_From_long((long)((4096*1024))));
SWIG_Python_SetConstant(d, "SVN_VER_MAJOR",SWIG_From_long((long)(1)));
SWIG_Python_SetConstant(d, "SVN_VER_MINOR",SWIG_From_long((long)(6)));
- SWIG_Python_SetConstant(d, "SVN_VER_PATCH",SWIG_From_long((long)(15)));
- SWIG_Python_SetConstant(d, "SVN_VER_MICRO",SWIG_From_long((long)(15)));
+ SWIG_Python_SetConstant(d, "SVN_VER_PATCH",SWIG_From_long((long)(16)));
+ SWIG_Python_SetConstant(d, "SVN_VER_MICRO",SWIG_From_long((long)(16)));
SWIG_Python_SetConstant(d, "SVN_VER_LIBRARY",SWIG_From_long((long)(1)));
- SWIG_Python_SetConstant(d, "SVN_VER_TAG",SWIG_FromCharPtr(" (r1038135)"));
+ SWIG_Python_SetConstant(d, "SVN_VER_TAG",SWIG_FromCharPtr(" (r1073529)"));
SWIG_Python_SetConstant(d, "SVN_VER_NUMTAG",SWIG_FromCharPtr(""));
- SWIG_Python_SetConstant(d, "SVN_VER_REVISION",SWIG_From_long((long)(1038135)));
+ SWIG_Python_SetConstant(d, "SVN_VER_REVISION",SWIG_From_long((long)(1073529)));
SWIG_Python_SetConstant(d, "svn_prop_entry_kind",SWIG_From_long((long)(svn_prop_entry_kind)));
SWIG_Python_SetConstant(d, "svn_prop_wc_kind",SWIG_From_long((long)(svn_prop_wc_kind)));
SWIG_Python_SetConstant(d, "svn_prop_regular_kind",SWIG_From_long((long)(svn_prop_regular_kind)));
=== modified file 'subversion/bindings/swig/ruby/core.c'
--- subversion/bindings/swig/ruby/core.c 2011-01-05 22:59:03 +0000
+++ subversion/bindings/swig/ruby/core.c 2011-03-22 11:15:25 +0000
@@ -29414,12 +29414,12 @@
rb_define_module_function(mCore, "svn_pool_create", _wrap_svn_pool_create, -1);
rb_define_const(mCore, "SVN_VER_MAJOR", SWIG_From_int((int)(1)));
rb_define_const(mCore, "SVN_VER_MINOR", SWIG_From_int((int)(6)));
- rb_define_const(mCore, "SVN_VER_PATCH", SWIG_From_int((int)(15)));
- rb_define_const(mCore, "SVN_VER_MICRO", SWIG_From_int((int)(15)));
+ rb_define_const(mCore, "SVN_VER_PATCH", SWIG_From_int((int)(16)));
+ rb_define_const(mCore, "SVN_VER_MICRO", SWIG_From_int((int)(16)));
rb_define_const(mCore, "SVN_VER_LIBRARY", SWIG_From_int((int)(1)));
- rb_define_const(mCore, "SVN_VER_TAG", SWIG_FromCharPtr(" (r1038135)"));
+ rb_define_const(mCore, "SVN_VER_TAG", SWIG_FromCharPtr(" (r1073529)"));
rb_define_const(mCore, "SVN_VER_NUMTAG", SWIG_FromCharPtr(""));
- rb_define_const(mCore, "SVN_VER_REVISION", SWIG_From_int((int)(1038135)));
+ rb_define_const(mCore, "SVN_VER_REVISION", SWIG_From_int((int)(1073529)));
cSvn_version_t.klass = rb_define_class_under(mCore, "Svn_version_t", rb_cObject);
SWIG_TypeClientData(SWIGTYPE_p_svn_version_t, (void *) &cSvn_version_t);
=== modified file 'subversion/bindings/swig/ruby/test/util.rb'
--- subversion/bindings/swig/ruby/test/util.rb 2009-11-17 02:16:23 +0000
+++ subversion/bindings/swig/ruby/test/util.rb 2011-03-22 11:15:25 +0000
@@ -232,6 +232,9 @@
@svnserve_port = port
@repos_svnserve_uri =
"svn://#{@svnserve_host}:#{@svnserve_port}#{@full_repos_path}"
+ # Avoid a race by waiting a short time for svnserve to start up.
+ # Without this, tests can fail with "Connection refused" errors.
+ sleep 0.1
break
end
end
=== modified file 'subversion/include/svn_version.h'
--- subversion/include/svn_version.h 2011-01-05 22:59:03 +0000
+++ subversion/include/svn_version.h 2011-03-22 11:15:25 +0000
@@ -66,7 +66,7 @@
*
* @since New in 1.1.
*/
-#define SVN_VER_PATCH 15
+#define SVN_VER_PATCH 16
/** @deprecated Provided for backward compatibility with the 1.0 API. */
@@ -89,7 +89,7 @@
*
* Always change this at the same time as SVN_VER_NUMTAG.
*/
-#define SVN_VER_TAG " (r1038135)"
+#define SVN_VER_TAG " (r1073529)"
/** Number tag: a string describing the version.
@@ -115,7 +115,7 @@
* When rolling a tarball, we automatically replace it with what we
* guess to be the correct revision number.
*/
-#define SVN_VER_REVISION 1038135
+#define SVN_VER_REVISION 1073529
/* Version strings composed from the above definitions. */
=== modified file 'subversion/libsvn_client/merge.c'
--- subversion/libsvn_client/merge.c 2011-01-05 22:59:03 +0000
+++ subversion/libsvn_client/merge.c 2011-03-22 11:15:25 +0000
@@ -502,7 +502,9 @@
}
/* Record a tree conflict in the WC, unless this is a dry run or a record-
- * only merge.
+ * only merge, or if a tree conflict is already flagged for the VICTIM_PATH.
+ * (The latter can happen if a merge-tracking-aware merge is doing multiple
+ * editor drives because of a gap in the range of eligible revisions.)
*
* The tree conflict, with its victim specified by VICTIM_PATH, is
* assumed to have happened during a merge using merge baton MERGE_B.
@@ -523,16 +525,22 @@
svn_wc_conflict_action_t action,
svn_wc_conflict_reason_t reason)
{
+ svn_wc_conflict_description_t *existing_conflict;
svn_wc_conflict_description_t *conflict;
if (merge_b->record_only || merge_b->dry_run)
return SVN_NO_ERROR;
- /* Construct the new conflict first to get the proper conflict->path */
- SVN_ERR(make_tree_conflict(&conflict, merge_b, adm_access, victim_path,
- node_kind, action, reason));
+ SVN_ERR(svn_wc__get_tree_conflict(&existing_conflict, victim_path,
+ adm_access, merge_b->pool));
+ if (existing_conflict == NULL)
+ {
+ /* There is no existing tree conflict so it is safe to add one. */
+ SVN_ERR(make_tree_conflict(&conflict, merge_b, adm_access, victim_path,
+ node_kind, action, reason));
+ SVN_ERR(svn_wc__add_tree_conflict(conflict, adm_access, merge_b->pool));
+ }
- SVN_ERR(svn_wc__add_tree_conflict(conflict, adm_access, merge_b->pool));
return SVN_NO_ERROR;
}
=== modified file 'subversion/libsvn_fs/fs-loader.c'
--- subversion/libsvn_fs/fs-loader.c 2009-11-17 02:16:23 +0000
+++ subversion/libsvn_fs/fs-loader.c 2011-03-22 11:15:25 +0000
@@ -658,6 +658,7 @@
svn_fs_t *fs;
const char *fs_path;
+ *new_rev = SVN_INVALID_REVNUM;
SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
fs = svn_fs_root_fs(txn_root);
fs_path = svn_fs_path(fs, pool);
=== modified file 'subversion/libsvn_fs_fs/fs_fs.c'
--- subversion/libsvn_fs_fs/fs_fs.c 2011-01-05 22:59:03 +0000
+++ subversion/libsvn_fs_fs/fs_fs.c 2011-03-22 11:15:25 +0000
@@ -5903,13 +5903,19 @@
/* Update the 'current' file. */
SVN_ERR(write_final_current(cb->fs, cb->txn->id, new_rev, start_node_id,
start_copy_id, pool));
+
+ /* At this point the new revision is committed and globally visible
+ so let the caller know it succeeded by giving it the new revision
+ number, which fulfills svn_fs_commit_txn() contract. Any errors
+ after this point do not change the fact that a new revision was
+ created. */
+ *cb->new_rev_p = new_rev;
+
ffd->youngest_rev_cache = new_rev;
/* Remove this transaction directory. */
SVN_ERR(svn_fs_fs__purge_txn(cb->fs, cb->txn->id, pool));
- *cb->new_rev_p = new_rev;
-
return SVN_NO_ERROR;
}
=== modified file 'subversion/libsvn_ra_neon/mergeinfo.c'
--- subversion/libsvn_ra_neon/mergeinfo.c 2009-11-17 02:16:23 +0000
+++ subversion/libsvn_ra_neon/mergeinfo.c 2011-03-22 11:15:25 +0000
@@ -171,6 +171,8 @@
static const char minfo_report_tail[] =
"</S:" SVN_DAV__MERGEINFO_REPORT ">" DEBUG_CR;
+ *catalog = NULL;
+
/* Construct the request body. */
svn_stringbuf_appendcstr(request_body, minfo_report_head);
svn_stringbuf_appendcstr(request_body,
@@ -237,7 +239,7 @@
FALSE,
pool));
- if (mb.err == SVN_NO_ERROR)
+ if (mb.err == SVN_NO_ERROR && apr_hash_count(mb.catalog))
*catalog = mb.catalog;
return mb.err;
=== modified file 'subversion/libsvn_ra_neon/options.c'
--- subversion/libsvn_ra_neon/options.c 2009-11-17 02:16:23 +0000
+++ subversion/libsvn_ra_neon/options.c 2011-03-22 11:15:25 +0000
@@ -110,6 +110,23 @@
/** Capabilities exchange. */
+/* Return TRUE iff STR exactly matches any of the elements of LIST. */
+static svn_boolean_t
+match_list(const char *str, const apr_array_header_t *list)
+{
+ int i;
+
+ for (i = 0; i < list->nelts; i++)
+ {
+ const char *this_str = APR_ARRAY_IDX(list, i, char *);
+
+ if (strcmp(this_str, str) == 0)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
/* Both server and repository support the capability. */
static const char *capability_yes = "yes";
/* Either server or repository does not support the capability. */
@@ -167,22 +184,21 @@
slightly more efficiently, but that wouldn't be worth it
until we have many more capabilities. */
- if (svn_cstring_match_glob_list(SVN_DAV_NS_DAV_SVN_DEPTH, vals))
+ if (match_list(SVN_DAV_NS_DAV_SVN_DEPTH, vals))
apr_hash_set(ras->capabilities, SVN_RA_CAPABILITY_DEPTH,
APR_HASH_KEY_STRING, capability_yes);
- if (svn_cstring_match_glob_list(SVN_DAV_NS_DAV_SVN_MERGEINFO, vals))
+ if (match_list(SVN_DAV_NS_DAV_SVN_MERGEINFO, vals))
/* The server doesn't know what repository we're referring
to, so it can't just say capability_yes. */
apr_hash_set(ras->capabilities, SVN_RA_CAPABILITY_MERGEINFO,
APR_HASH_KEY_STRING, capability_server_yes);
- if (svn_cstring_match_glob_list(SVN_DAV_NS_DAV_SVN_LOG_REVPROPS, vals))
+ if (match_list(SVN_DAV_NS_DAV_SVN_LOG_REVPROPS, vals))
apr_hash_set(ras->capabilities, SVN_RA_CAPABILITY_LOG_REVPROPS,
APR_HASH_KEY_STRING, capability_yes);
- if (svn_cstring_match_glob_list(SVN_DAV_NS_DAV_SVN_PARTIAL_REPLAY,
- vals))
+ if (match_list(SVN_DAV_NS_DAV_SVN_PARTIAL_REPLAY, vals))
apr_hash_set(ras->capabilities, SVN_RA_CAPABILITY_PARTIAL_REPLAY,
APR_HASH_KEY_STRING, capability_yes);
}
=== modified file 'subversion/libsvn_ra_serf/mergeinfo.c'
--- subversion/libsvn_ra_serf/mergeinfo.c 2011-01-05 22:45:51 +0000
+++ subversion/libsvn_ra_serf/mergeinfo.c 2011-03-22 11:15:25 +0000
@@ -238,6 +238,8 @@
const char *relative_url, *basecoll_url;
const char *path;
+ *catalog = NULL;
+
SVN_ERR(svn_ra_serf__get_baseline_info(&basecoll_url, &relative_url, session,
NULL, NULL, revision, NULL, pool));
@@ -297,7 +299,7 @@
else
SVN_ERR(err);
- if (mergeinfo_ctx->done)
+ if (mergeinfo_ctx->done && apr_hash_count(mergeinfo_ctx->result_catalog))
*catalog = mergeinfo_ctx->result_catalog;
return SVN_NO_ERROR;
=== modified file 'subversion/libsvn_ra_serf/serf.c'
--- subversion/libsvn_ra_serf/serf.c 2011-01-05 22:45:51 +0000
+++ subversion/libsvn_ra_serf/serf.c 2011-03-22 11:15:25 +0000
@@ -67,6 +67,22 @@
apr_pool_t *pool;
};
+/* Return TRUE iff STR exactly matches any of the elements of LIST. */
+static svn_boolean_t
+match_list(const char *str, const apr_array_header_t *list)
+{
+ int i;
+
+ for (i = 0; i < list->nelts; i++)
+ {
+ const char *this_str = APR_ARRAY_IDX(list, i, char *);
+
+ if (strcmp(this_str, str) == 0)
+ return TRUE;
+ }
+
+ return FALSE;
+}
/* This implements serf_bucket_headers_do_callback_fn_t.
* BATON is a 'struct capabilities_response_baton *'.
@@ -91,13 +107,13 @@
efficiently, but that wouldn't be worth it until we have many
more capabilities. */
- if (svn_cstring_match_glob_list(SVN_DAV_NS_DAV_SVN_DEPTH, vals))
+ if (match_list(SVN_DAV_NS_DAV_SVN_DEPTH, vals))
{
apr_hash_set(crb->capabilities, SVN_RA_CAPABILITY_DEPTH,
APR_HASH_KEY_STRING, capability_yes);
}
- if (svn_cstring_match_glob_list(SVN_DAV_NS_DAV_SVN_MERGEINFO, vals))
+ if (match_list(SVN_DAV_NS_DAV_SVN_MERGEINFO, vals))
{
/* The server doesn't know what repository we're referring
to, so it can't just say capability_yes. */
@@ -105,13 +121,13 @@
APR_HASH_KEY_STRING, capability_server_yes);
}
- if (svn_cstring_match_glob_list(SVN_DAV_NS_DAV_SVN_LOG_REVPROPS, vals))
+ if (match_list(SVN_DAV_NS_DAV_SVN_LOG_REVPROPS, vals))
{
apr_hash_set(crb->capabilities, SVN_RA_CAPABILITY_LOG_REVPROPS,
APR_HASH_KEY_STRING, capability_yes);
}
- if (svn_cstring_match_glob_list(SVN_DAV_NS_DAV_SVN_PARTIAL_REPLAY, vals))
+ if (match_list(SVN_DAV_NS_DAV_SVN_PARTIAL_REPLAY, vals))
{
apr_hash_set(crb->capabilities, SVN_RA_CAPABILITY_PARTIAL_REPLAY,
APR_HASH_KEY_STRING, capability_yes);
=== modified file 'subversion/libsvn_ra_serf/update.c'
--- subversion/libsvn_ra_serf/update.c 2011-01-05 22:59:03 +0000
+++ subversion/libsvn_ra_serf/update.c 2011-03-22 11:15:25 +0000
@@ -1633,7 +1633,8 @@
}
else if (state == IGNORE_PROP_NAME)
{
- push_state(parser, ctx, PROP);
+ report_info_t *info = push_state(parser, ctx, PROP);
+ info->prop_encoding = svn_xml_get_attr_value("encoding", attrs);
}
else if (state == NEED_PROP_NAME)
{
@@ -1643,6 +1644,7 @@
info->prop_ns = name.namespace;
info->prop_name = apr_pstrdup(parser->state->pool, name.name);
+ info->prop_encoding = svn_xml_get_attr_value("encoding", attrs);
info->prop_val = NULL;
info->prop_val_len = 0;
}
=== modified file 'subversion/libsvn_repos/fs-wrap.c'
--- subversion/libsvn_repos/fs-wrap.c 2009-11-17 02:16:23 +0000
+++ subversion/libsvn_repos/fs-wrap.c 2011-03-22 11:15:25 +0000
@@ -43,6 +43,8 @@
svn_error_t *err;
const char *txn_name;
+ *new_rev = SVN_INVALID_REVNUM;
+
/* Run pre-commit hooks. */
SVN_ERR(svn_fs_txn_name(&txn_name, txn, pool));
SVN_ERR(svn_repos__hooks_pre_commit(repos, txn_name, pool));
=== modified file 'subversion/libsvn_repos/log.c'
--- subversion/libsvn_repos/log.c 2011-01-05 22:59:03 +0000
+++ subversion/libsvn_repos/log.c 2011-03-22 11:15:25 +0000
@@ -1043,6 +1043,7 @@
{
svn_fs_root_t *root;
apr_pool_t *iterpool;
+ svn_error_t *err;
int i;
/* Create a history object for each path so we can walk through
@@ -1084,7 +1085,6 @@
if (i < MAX_OPEN_HISTORIES)
{
- svn_error_t *err;
err = svn_fs_node_history(&info->hist, root, this_path, pool);
if (err
&& ignore_missing_locations
@@ -1106,10 +1106,20 @@
info->newpool = NULL;
}
- SVN_ERR(get_history(info, fs,
- strict_node_history,
- authz_read_func, authz_read_baton,
- hist_start, pool));
+ err = get_history(info, fs,
+ strict_node_history,
+ authz_read_func, authz_read_baton,
+ hist_start, pool);
+ if (err
+ && ignore_missing_locations
+ && (err->apr_err == SVN_ERR_FS_NOT_FOUND ||
+ err->apr_err == SVN_ERR_FS_NOT_DIRECTORY ||
+ err->apr_err == SVN_ERR_FS_NO_SUCH_REVISION))
+ {
+ svn_error_clear(err);
+ continue;
+ }
+ SVN_ERR(err);
APR_ARRAY_PUSH(*histories, struct path_info *) = info;
}
svn_pool_destroy(iterpool);
=== modified file 'subversion/libsvn_repos/rev_hunt.c'
--- subversion/libsvn_repos/rev_hunt.c 2011-01-05 22:59:03 +0000
+++ subversion/libsvn_repos/rev_hunt.c 2011-03-22 11:15:25 +0000
@@ -1090,8 +1090,8 @@
/* We switch between two pools while looping, since we need information from
the last iteration to be available. */
- iterpool = svn_pool_create(result_pool);
- last_pool = svn_pool_create(result_pool);
+ iterpool = svn_pool_create(scratch_pool);
+ last_pool = svn_pool_create(scratch_pool);
/* The path had better be a file in this revision. */
SVN_ERR(svn_fs_revision_root(&root, repos->fs, end, scratch_pool));
@@ -1170,6 +1170,7 @@
}
svn_pool_destroy(iterpool);
+ svn_pool_destroy(last_pool);
return SVN_NO_ERROR;
}
=== modified file 'subversion/libsvn_subr/error.c'
--- subversion/libsvn_subr/error.c 2009-11-17 02:16:23 +0000
+++ subversion/libsvn_subr/error.c 2011-03-22 11:15:25 +0000
@@ -36,7 +36,15 @@
#include "svn_private_config.h"
-/*** Helpers for creating errors ***/
+/*
+ * Undefine the helpers for creating errors.
+ *
+ * *NOTE*: Any use of these functions in any other function may need
+ * to call svn_error__locate() because the macro that would otherwise
+ * do this is being undefined and the filename and line number will
+ * not be properly set in the static error_file and error_line
+ * variables.
+ */
#undef svn_error_create
#undef svn_error_createf
#undef svn_error_quick_wrap
@@ -504,6 +512,11 @@
if (!can_return)
abort(); /* Nothing else we can do as a library */
+ /* The filename and line number of the error source needs to be set
+ here because svn_error_createf() is not the macro defined in
+ svn_error.h but the real function. */
+ svn_error__locate(file, line);
+
if (expr)
return svn_error_createf(SVN_ERR_ASSERTION_FAIL, NULL,
_("In file '%s' line %d: assertion failed (%s)"),
=== modified file 'subversion/libsvn_wc/props.c'
--- subversion/libsvn_wc/props.c 2011-01-05 22:59:03 +0000
+++ subversion/libsvn_wc/props.c 2011-03-22 11:15:25 +0000
@@ -1135,6 +1135,7 @@
const svn_string_t *working_val,
svn_wc_conflict_resolver_func_t conflict_func,
void *conflict_baton,
+ svn_boolean_t dry_run,
apr_pool_t *pool)
{
svn_wc_conflict_result_t *result = NULL;
@@ -1143,7 +1144,7 @@
svn_wc_conflict_description_t *cdesc;
const char *dirpath = svn_path_dirname(path, filepool);
- if (! conflict_func)
+ if (! conflict_func || dry_run)
{
/* Just postpone the conflict. */
*conflict_remains = TRUE;
@@ -1364,6 +1365,7 @@
const svn_string_t *new_val,
svn_wc_conflict_resolver_func_t conflict_func,
void *conflict_baton,
+ svn_boolean_t dry_run,
svn_wc_adm_access_t *adm_access,
apr_pool_t *pool)
@@ -1400,7 +1402,7 @@
NULL, new_val,
base_val, working_val,
conflict_func, conflict_baton,
- pool));
+ dry_run, pool));
if (got_conflict)
*conflict = svn_string_createf
(pool,
@@ -1416,7 +1418,8 @@
is_dir, propname,
working_props, NULL, new_val,
base_val, NULL,
- conflict_func, conflict_baton, pool));
+ conflict_func, conflict_baton,
+ dry_run, pool));
if (got_conflict)
*conflict = svn_string_createf
(pool, _("Trying to create property '%s' with value '%s',\n"
@@ -1459,6 +1462,7 @@
const svn_string_t *old_val,
svn_wc_conflict_resolver_func_t conflict_func,
void *conflict_baton,
+ svn_boolean_t dry_run,
svn_wc_adm_access_t *adm_access,
apr_pool_t *pool)
{
@@ -1489,7 +1493,7 @@
old_val, NULL,
base_val, working_val,
conflict_func, conflict_baton,
- pool));
+ dry_run, pool));
if (got_conflict)
*conflict = svn_string_createf
(pool,
@@ -1510,7 +1514,8 @@
is_dir, propname,
working_props, old_val, NULL,
base_val, working_val,
- conflict_func, conflict_baton, pool));
+ conflict_func, conflict_baton,
+ dry_run, pool));
if (got_conflict)
*conflict = svn_string_createf
(pool,
@@ -1542,6 +1547,7 @@
const svn_string_t *new_val,
svn_wc_conflict_resolver_func_t conflict_func,
void *conflict_baton,
+ svn_boolean_t dry_run,
svn_wc_adm_access_t *adm_access,
apr_pool_t *pool)
{
@@ -1583,7 +1589,7 @@
old_val, new_val,
base_val, working_val,
conflict_func, conflict_baton,
- pool));
+ dry_run, pool));
if (got_conflict)
*conflict = svn_string_createf
(pool,
@@ -1648,6 +1654,7 @@
const svn_string_t *new_val,
svn_wc_conflict_resolver_func_t conflict_func,
void *conflict_baton,
+ svn_boolean_t dry_run,
svn_wc_adm_access_t *adm_access,
apr_pool_t *pool)
{
@@ -1671,7 +1678,7 @@
old_val, new_val,
base_val, working_val,
conflict_func, conflict_baton,
- pool));
+ dry_run, pool));
if (got_conflict)
{
/* Describe the conflict, referring to base_val as well as
@@ -1746,6 +1753,7 @@
const svn_string_t *new_val,
svn_wc_conflict_resolver_func_t conflict_func,
void *conflict_baton,
+ svn_boolean_t dry_run,
svn_wc_adm_access_t *adm_access,
apr_pool_t *pool)
{
@@ -1764,8 +1772,8 @@
working_props, conflict,
propname, base_val, old_val,
new_val, conflict_func,
- conflict_baton, adm_access,
- pool));
+ conflict_baton,
+ dry_run, adm_access, pool));
}
else
{
@@ -1776,8 +1784,8 @@
working_props, conflict,
propname, base_val, old_val,
new_val, conflict_func,
- conflict_baton, adm_access,
- pool));
+ conflict_baton,
+ dry_run, adm_access, pool));
}
return SVN_NO_ERROR;
@@ -1862,21 +1870,21 @@
working_props, &conflict,
propname, base_val, to_val,
conflict_func, conflict_baton,
- adm_access, pool));
+ dry_run, adm_access, pool));
else if (! to_val) /* delete an existing property */
SVN_ERR(apply_single_prop_delete(is_normal ? state : NULL, path, is_dir,
working_props, &conflict,
propname, base_val, from_val,
conflict_func, conflict_baton,
- adm_access, pool));
+ dry_run, adm_access, pool));
else /* changing an existing property */
SVN_ERR(apply_single_prop_change(is_normal ? state : NULL, path, is_dir,
working_props, &conflict,
propname, base_val, from_val, to_val,
conflict_func, conflict_baton,
- adm_access, pool));
+ dry_run, adm_access, pool));
/* merging logic complete, now we need to possibly log conflict
=== modified file 'subversion/mod_dav_svn/repos.c'
--- subversion/mod_dav_svn/repos.c 2011-01-05 22:59:03 +0000
+++ subversion/mod_dav_svn/repos.c 2011-03-22 11:15:25 +0000
@@ -1607,6 +1607,23 @@
}
+/* Return TRUE iff STR exactly matches any of the elements of LIST. */
+static svn_boolean_t
+match_list(const char *str, const apr_array_header_t *list)
+{
+ int i;
+
+ for (i = 0; i < list->nelts; i++)
+ {
+ const char *this_str = APR_ARRAY_IDX(list, i, char *);
+
+ if (strcmp(this_str, str) == 0)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static dav_error *
get_resource(request_rec *r,
@@ -1815,8 +1832,7 @@
apr_array_header_t *vals
= svn_cstring_split(val, ",", TRUE, r->pool);
- if (svn_cstring_match_glob_list(SVN_DAV_NS_DAV_SVN_MERGEINFO,
- vals))
+ if (match_list(SVN_DAV_NS_DAV_SVN_MERGEINFO, vals))
{
apr_hash_set(repos->client_capabilities,
SVN_RA_CAPABILITY_MERGEINFO,
@@ -1923,8 +1939,10 @@
dav_locktoken_list *list = ltl;
serr = svn_fs_get_access(&access_ctx, repos->fs);
- if (serr)
+ if (serr || !access_ctx)
{
+ if (serr == NULL)
+ serr = svn_error_create(SVN_ERR_FS_LOCK_OWNER_MISMATCH, NULL, NULL);
return dav_svn__sanitize_error(serr, "Lock token is in request, "
"but no user name",
HTTP_BAD_REQUEST, r);
=== modified file 'subversion/mod_dav_svn/version.c'
--- subversion/mod_dav_svn/version.c 2009-11-17 02:16:23 +0000
+++ subversion/mod_dav_svn/version.c 2011-03-22 11:15:25 +0000
@@ -1172,11 +1172,13 @@
svn_error_t *serr;
serr = svn_fs_get_access(&fsaccess, resource->info->repos->fs);
- if (serr)
+ if (serr || !fsaccess)
{
/* If an authenticated user name was attached to the request,
then dav_svn_get_resource() should have already noticed and
created an fs_access_t in the filesystem. */
+ if (serr == NULL)
+ serr = svn_error_create(SVN_ERR_FS_LOCK_OWNER_MISMATCH, NULL, NULL);
return dav_svn__sanitize_error(serr, "Lock token(s) in request, but "
"missing an user name", HTTP_BAD_REQUEST,
resource->info->r);
=== modified file 'subversion/po/zh_CN.po'
--- subversion/po/zh_CN.po 2011-01-05 22:59:03 +0000
+++ subversion/po/zh_CN.po 2011-03-22 11:15:25 +0000
@@ -38,8 +38,8 @@
msgstr ""
"Project-Id-Version: subversion 1.6\n"
"Report-Msgid-Bugs-To: dev@xxxxxxxxxxxxxxxxxxxxx\n"
-"POT-Creation-Date: 2010-09-05 21:45+0800\n"
-"PO-Revision-Date: 2010-09-05 21:33+0800\n"
+"POT-Creation-Date: 2010-12-26 12:00+0800\n"
+"PO-Revision-Date: 2010-12-26 12:00+0800\n"
"Last-Translator: Subversion Developers <dev@xxxxxxxxxxxxxxxxxxxxx>\n"
"Language-Team: Simplified Chinese <dev@xxxxxxxxxxxxxxxxxxxxx>\n"
"Language: \n"
@@ -3541,10 +3541,6 @@
msgid "Incomplete or unterminated property block"
msgstr "ä¸å®æ´ææªç»æç屿§å"
-#, c-format
-msgid " removing '\\r' from %s ..."
-msgstr "æ£å¨ä» '%s' å é¤ '\\r' ..."
-
msgid "Unexpected EOF writing contents"
msgstr "åå
å®¹æ¶æå¤ç»æ"
@@ -3603,6 +3599,10 @@
msgid "Unrecognized node-action on node '%s'"
msgstr "èç¹â%sâçå¨ä½ä¸è½è¯å«"
+#, c-format
+msgid " removing '\\r' from %s ..."
+msgstr "æ£å¨ä» '%s' å é¤ '\\r' ..."
+
msgid " done.\n"
msgstr "宿ã\n"
@@ -4323,14 +4323,14 @@
msgid ""
"Copyright (C) 2000-2009 CollabNet.\n"
-"Subversion is open source software, see http://subversion.tigris.org/\n"
+"Subversion is open source software, see http://subversion.apache.org/\n"
"This product includes software developed by CollabNet (http://www.Collab."
"Net/).\n"
"\n"
msgstr ""
"çæææ (C) 2000-2009 CollabNetã\n"
-"Subversion æ¯å¼æ¾æºä»£ç 软件ï¼è¯·åé
http://subversion.tigris.org/ ç«ç¹ã\n"
-"æ¤äº§åå
å«ç± CollabNet(http://www.Collab.Net/) å¼åç软件ã\n"
+"Subversion æ¯å¼æ¾æºä»£ç 软件ï¼è¯·åé
http://subversion.apache.org/ ç«ç¹ã\n"
+"æ¤äº§åå
å«ç± CollabNet (http://www.Collab.Net/) å¼åç软件ã\n"
"\n"
#, c-format
@@ -5181,15 +5181,6 @@
#, c-format
msgid ""
-"The path '%s' appears to be part of a Subversion 1.7 or greater\n"
-"working copy rooted at '%s'.\n"
-"Please upgrade your Subversion client to use this working copy."
-msgstr ""
-"è·¯å¾ '%s' 好忝 Subversion 1.7 ææ´é«çæ¬çå·¥ä½å¯æ¬ï¼æ ¹è·¯å¾æ¯ '%s'ã\n"
-"请åçº§ä½ ç Subversion 客æ·ç«¯ï¼ä»¥ä½¿ç¨æ¤å·¥ä½å¯æ¬ã"
-
-#, c-format
-msgid ""
"Working copy format of '%s' is too old (%d); please check out your working "
"copy again"
msgstr "â%sâçå·¥ä½å¯æ¬æ ¼å¼å¤ªæ§(%d)ï¼è¯·éæ°ååºå·¥ä½å¯æ¬"
@@ -5372,6 +5363,15 @@
msgid "'%s' does not appear to be a URL"
msgstr "â%sâä¸åæ¯URL"
+#, c-format
+msgid ""
+"svn: warning: The depth of this commit is '%s', but copied directories will "
+"regardless be committed with depth '%s'. You must remove unwanted children of "
+"those directories in a separate commit.\n"
+msgstr ""
+"svn: è¦å: æ¤æäº¤çæ·±åº¦æ¯ '%s'ï¼ä½æ¯å¤å¶çç®å½å°è¢«æäº¤çæ·±åº¦æ¯ '%s'ãä½ å¿
é¡»å¨"
+"ç¬ç«çæäº¤ä¸å é¤è¿äºç®å½ä¸ä¸éè¦ç项ç®ã\n"
+
msgid "||||||| ORIGINAL"
msgstr "||||||| åå§çæ¬"
=== modified file 'subversion/tests/libsvn_fs/fs-test.c'
--- subversion/tests/libsvn_fs/fs-test.c 2009-11-17 02:16:23 +0000
+++ subversion/tests/libsvn_fs/fs-test.c 2011-03-22 11:15:25 +0000
@@ -54,6 +54,7 @@
* EXPECTED_CONFLICT. If they don't match, return error.
*
* If a conflict is expected but the commit succeeds anyway, return
+ * error. If the commit fails but does not provide an error, return
* error.
*/
static svn_error_t *
@@ -94,13 +95,24 @@
conflict, expected_conflict);
}
}
- else if (err) /* commit failed, but not due to conflict */
+ else if (err) /* commit may have succeeded, but always report an error */
{
- return svn_error_quick_wrap
- (err, "commit failed due to something other than a conflict");
+ if (SVN_IS_VALID_REVNUM(*new_rev))
+ return svn_error_quick_wrap
+ (err, "commit succeeded but something else failed");
+ else
+ return svn_error_quick_wrap
+ (err, "commit failed due to something other than a conflict");
}
- else /* err == NULL, so commit succeeded */
+ else /* err == NULL, commit should have succeeded */
{
+ if (! SVN_IS_VALID_REVNUM(*new_rev))
+ {
+ return svn_error_create
+ (SVN_ERR_FS_GENERAL, NULL,
+ "commit failed but no error was returned");
+ }
+
if (expected_conflict)
{
return svn_error_createf
@@ -1150,6 +1162,7 @@
/* Commit it. */
SVN_ERR(svn_fs_commit_txn(&conflict, &after_rev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(after_rev));
/* Make sure it's a different revision than before. */
if (after_rev == before_rev)
@@ -1226,6 +1239,7 @@
/* Go ahead and commit the tree, and destroy the txn object. */
SVN_ERR(svn_fs_commit_txn(&conflict, &after_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(after_rev));
/* Carefully validate that tree in the new revision, now. */
SVN_ERR(svn_fs_revision_root(&revision_root, fs, after_rev, subpool));
@@ -1287,6 +1301,7 @@
/* Go ahead and commit the tree, and destroy the txn object. */
SVN_ERR(svn_fs_commit_txn(&conflict, &after_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(after_rev));
/* Carefully validate that tree in the new revision, now. */
SVN_ERR(svn_fs_revision_root(&revision_root, fs, after_rev, subpool));
@@ -2707,6 +2722,7 @@
/* Commit the greek tree. */
SVN_ERR(svn_fs_commit_txn(NULL, &new_rev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(new_rev));
/* Create new transaction. */
SVN_ERR(svn_fs_begin_txn(&txn, fs, new_rev, pool));
@@ -2935,6 +2951,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(rev));
after_commit = apr_time_now();
@@ -2989,6 +3006,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(rev));
svn_pool_clear(subpool);
/* Modify and commit iota a few times, then test to see if we can
@@ -3024,6 +3042,7 @@
SVN_ERR(svn_test__set_file_contents
(txn_root, "iota", iota_contents_2, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(rev));
svn_pool_clear(subpool);
/* Revision 3. */
@@ -3032,6 +3051,7 @@
SVN_ERR(svn_test__set_file_contents
(txn_root, "iota", iota_contents_3, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(rev));
svn_pool_clear(subpool);
/* Revision 4. */
@@ -3040,6 +3060,7 @@
SVN_ERR(svn_test__set_file_contents
(txn_root, "iota", iota_contents_4, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(rev));
svn_pool_clear(subpool);
/* Revision 5. */
@@ -3048,6 +3069,7 @@
SVN_ERR(svn_test__set_file_contents
(txn_root, "iota", iota_contents_5, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(rev));
svn_pool_clear(subpool);
/* Revision 6. */
@@ -3056,6 +3078,7 @@
SVN_ERR(svn_test__set_file_contents
(txn_root, "iota", iota_contents_6, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(rev));
svn_pool_clear(subpool);
/* Revision 7. */
@@ -3064,6 +3087,7 @@
SVN_ERR(svn_test__set_file_contents
(txn_root, "iota", iota_contents_7, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(rev));
svn_pool_clear(subpool);
/** Now check the full Greek Tree in all of those revisions,
@@ -3366,6 +3390,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/***********************************************************************/
/* REVISION 1 */
@@ -3423,6 +3448,7 @@
subpool));
}
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/***********************************************************************/
/* REVISION 2 */
@@ -3474,6 +3500,7 @@
subpool));
}
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/***********************************************************************/
/* REVISION 3 */
@@ -3523,6 +3550,7 @@
SVN_ERR(svn_test__txn_script_exec(txn_root, script_entries, 2, subpool));
}
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/***********************************************************************/
/* REVISION 4 */
@@ -3699,6 +3727,7 @@
(&wh_func, &wh_baton, txn_root, "bigfile", NULL, NULL, subpool));
SVN_ERR(svn_txdelta_send_string(&contents, wh_func, wh_baton, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
SVN_ERR(svn_fs_deltify_revision(fs, youngest_rev, subpool));
checksum_list[youngest_rev] = checksum;
svn_pool_clear(subpool);
@@ -3714,6 +3743,7 @@
(&wh_func, &wh_baton, txn_root, "bigfile", NULL, NULL, subpool));
SVN_ERR(svn_txdelta_send_string(&contents, wh_func, wh_baton, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
SVN_ERR(svn_fs_deltify_revision(fs, youngest_rev, subpool));
checksum_list[youngest_rev] = checksum;
svn_pool_clear(subpool);
@@ -3728,6 +3758,7 @@
(&wh_func, &wh_baton, txn_root, "bigfile", NULL, NULL, subpool));
SVN_ERR(svn_txdelta_send_string(&contents, wh_func, wh_baton, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
SVN_ERR(svn_fs_deltify_revision(fs, youngest_rev, subpool));
checksum_list[youngest_rev] = checksum;
svn_pool_clear(subpool);
@@ -3744,6 +3775,7 @@
(&wh_func, &wh_baton, txn_root, "bigfile", NULL, NULL, subpool));
SVN_ERR(svn_txdelta_send_string(&contents, wh_func, wh_baton, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
SVN_ERR(svn_fs_deltify_revision(fs, youngest_rev, subpool));
checksum_list[youngest_rev] = checksum;
svn_pool_clear(subpool);
@@ -3763,6 +3795,7 @@
SVN_ERR(svn_txdelta_send_string
(&contents, wh_func, wh_baton, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
SVN_ERR(svn_fs_deltify_revision(fs, youngest_rev, subpool));
checksum_list[youngest_rev] = checksum;
svn_pool_clear(subpool);
@@ -3883,6 +3916,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/* Root node's revision should be the same as YOUNGEST_REV. */
SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest_rev, subpool));
@@ -3904,6 +3938,7 @@
apr_psprintf(subpool, "iota version %d", i + 2), subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/* Root node's revision should be the same as YOUNGEST_REV. */
SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest_rev, subpool));
@@ -4018,6 +4053,7 @@
/* Now commit the transaction. */
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/* Now, we have a new revision, and all paths in it should have a
created rev of 1. Verify this. */
@@ -4057,6 +4093,7 @@
SVN_ERR(verify_path_revs(txn_root, path_revs, 20, subpool));
/* commit transaction */
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/* get a revision root for the new revision */
SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest_rev, subpool));
/* verify created revs */
@@ -4081,6 +4118,7 @@
SVN_ERR(verify_path_revs(txn_root, path_revs, 20, subpool));
/* commit transaction */
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/* get a revision root for the new revision */
SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest_rev, subpool));
/* verify created revs */
@@ -4147,18 +4185,21 @@
SVN_ERR(svn_fs_make_file(txn_root, "A", subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A", "1", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 2 */
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, subpool));
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A", "2", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 3 */
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, subpool));
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A", "3", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 4 */
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, subpool));
@@ -4171,6 +4212,7 @@
SVN_ERR(svn_fs_copy(rev_root, "A", txn_root, "C", subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "C", "4", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 5 */
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, subpool));
@@ -4178,6 +4220,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "B", "5", subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "C", "5", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 6 */
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, subpool));
@@ -4188,6 +4231,7 @@
SVN_ERR(svn_fs_copy(rev_root, "B", txn_root, "D", subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "D", "5", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 7 */
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, subpool));
@@ -4196,12 +4240,14 @@
SVN_ERR(svn_fs_make_file(txn_root, "E", subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "E", "7", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 8 */
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, subpool));
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "E", "8", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 9 */
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, subpool));
@@ -4210,12 +4256,14 @@
SVN_ERR(svn_fs_copy(rev_root, "E", txn_root, "F", subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "F", "9", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 10 */
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, subpool));
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "F", "10", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/*** Step II: Exhaustively verify relationship between all nodes in
@@ -4334,6 +4382,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, spool));
SVN_ERR(svn_test__create_greek_tree(txn_root, spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/*** Revision 2: Copy A/D/G/rho to A/D/G/rho2. ***/
@@ -4342,6 +4391,7 @@
SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest_rev, spool));
SVN_ERR(svn_fs_copy(rev_root, "A/D/G/rho", txn_root, "A/D/G/rho2", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/*** Revision 3: Copy A/D/G to A/D/G2. ***/
@@ -4350,6 +4400,7 @@
SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest_rev, spool));
SVN_ERR(svn_fs_copy(rev_root, "A/D/G", txn_root, "A/D/G2", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/*** Revision 4: Copy A/D to A/D2. ***/
@@ -4358,6 +4409,7 @@
SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest_rev, spool));
SVN_ERR(svn_fs_copy(rev_root, "A/D", txn_root, "A/D2", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/*** Revision 5: Edit all the rho's! ***/
@@ -4381,6 +4433,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D2/G2/rho2",
"Edited text.", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_destroy(spool);
@@ -4816,6 +4869,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 2: Modify A/D/H/chi and A/B/E/alpha. */
@@ -4824,6 +4878,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/H/chi", "2", subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A/B/E/alpha", "2", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 3: Copy A/D to A/D2, and create A/D2/floop new. */
@@ -4833,6 +4888,7 @@
SVN_ERR(svn_fs_copy(root, "A/D", txn_root, "A/D2", subpool));
SVN_ERR(svn_fs_make_file(txn_root, "A/D2/floop", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 4: Modify A/D/H/chi and A/D2/H/chi. */
@@ -4841,6 +4897,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/H/chi", "4", subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D2/H/chi", "4", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 5: Delete A/D2/G, add A/B/E/alfalfa. */
@@ -4849,6 +4906,7 @@
SVN_ERR(svn_fs_delete(txn_root, "A/D2/G", subpool));
SVN_ERR(svn_fs_make_file(txn_root, "A/B/E/alfalfa", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 6: Restore A/D2/G (from version 4). */
@@ -4857,6 +4915,7 @@
SVN_ERR(svn_fs_revision_root(&root, fs, 4, subpool));
SVN_ERR(svn_fs_copy(root, "A/D2/G", txn_root, "A/D2/G", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 7: Move A/D2 to A/D (replacing it), Add a new file A/D2,
@@ -4870,6 +4929,7 @@
SVN_ERR(svn_fs_make_file(txn_root, "A/D2", subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/floop", "7", subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Now test some origin revisions. */
=== modified file 'subversion/tests/libsvn_fs/locks-test.c'
--- subversion/tests/libsvn_fs/locks-test.c 2009-11-17 02:16:23 +0000
+++ subversion/tests/libsvn_fs/locks-test.c 2011-03-22 11:15:25 +0000
@@ -121,6 +121,7 @@
/* Create the greek tree and commit it. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* We are now 'bubba'. */
SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
@@ -167,6 +168,7 @@
/* Create the greek tree and commit it. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* We are now 'bubba'. */
SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
@@ -217,6 +219,7 @@
/* Create the greek tree and commit it. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* We are now 'bubba'. */
SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
@@ -276,6 +279,7 @@
/* Create the greek tree and commit it. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* We are now 'bubba'. */
SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
@@ -411,6 +415,7 @@
/* Create the greek tree and commit it. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* We are now 'bubba'. */
SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
@@ -469,6 +474,7 @@
/* Create the greek tree and commit it. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* We are now 'bubba'. */
SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
@@ -492,6 +498,7 @@
/* Try to commit the file change. Should fail, because we're nobody. */
err = svn_fs_commit_txn(&conflict, &newrev, txn, pool);
+ SVN_TEST_ASSERT(! SVN_IS_VALID_REVNUM(newrev));
if (! err)
return svn_error_create
(SVN_ERR_TEST_FAILED, NULL,
@@ -504,6 +511,7 @@
/* Try to commit the file change. Should fail, because we're 'hortense'. */
err = svn_fs_commit_txn(&conflict, &newrev, txn, pool);
+ SVN_TEST_ASSERT(! SVN_IS_VALID_REVNUM(newrev));
if (! err)
return svn_error_create
(SVN_ERR_TEST_FAILED, NULL,
@@ -516,6 +524,7 @@
/* Try to commit the file change. Should fail, because there's no token. */
err = svn_fs_commit_txn(&conflict, &newrev, txn, pool);
+ SVN_TEST_ASSERT(! SVN_IS_VALID_REVNUM(newrev));
if (! err)
return svn_error_create
(SVN_ERR_TEST_FAILED, NULL,
@@ -527,6 +536,7 @@
/* Commit should now succeed. */
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
return SVN_NO_ERROR;
}
@@ -566,6 +576,7 @@
/* Create the greek tree and commit it. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* Make a new transaction and delete "/A" */
SVN_ERR(svn_fs_begin_txn2(&txn, fs, newrev, SVN_FS_TXN_CHECK_LOCKS, pool));
@@ -584,6 +595,7 @@
/* Try to commit the transaction. Should fail, because a child of
the deleted directory is locked by someone else. */
err = svn_fs_commit_txn(&conflict, &newrev, txn, pool);
+ SVN_TEST_ASSERT(! SVN_IS_VALID_REVNUM(newrev));
if (! err)
return svn_error_create
(SVN_ERR_TEST_FAILED, NULL,
@@ -594,6 +606,7 @@
SVN_ERR(svn_fs_set_access(fs, access));
SVN_ERR(svn_fs_access_add_lock_token(access, mylock->token));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
return SVN_NO_ERROR;
}
@@ -630,6 +643,7 @@
/* Create the greek tree and commit it. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* Become 'bubba' and lock "/A/D/G/rho". */
SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
@@ -650,6 +664,7 @@
/* Commit should succeed; this means we're doing a non-recursive
lock-check on directory, rather than a recursive one. */
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
return SVN_NO_ERROR;
}
@@ -687,6 +702,7 @@
/* Create the greek tree and commit it. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* Become 'bubba' and lock imaginary path "/A/D/G2/blooga". */
SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
@@ -824,6 +840,7 @@
/* Create the greek tree and commit it. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* Make a new transaction and change rho. */
SVN_ERR(svn_fs_begin_txn2(&txn, fs, newrev, SVN_FS_TXN_CHECK_LOCKS, pool));
@@ -846,6 +863,7 @@
/* Try to commit. Should fail because we're 'nobody', and the lock
hasn't expired yet. */
err = svn_fs_commit_txn(&conflict, &newrev, txn, pool);
+ SVN_TEST_ASSERT(! SVN_IS_VALID_REVNUM(newrev));
if (! err)
return svn_error_create
(SVN_ERR_TEST_FAILED, NULL,
@@ -882,6 +900,7 @@
}
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
return SVN_NO_ERROR;
}
@@ -915,6 +934,7 @@
/* Create the greek tree and commit it. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* Become 'bubba' and lock "/A/D/G/rho". */
SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
@@ -1002,6 +1022,7 @@
/* Create the greek tree and commit it. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* Commit a small change to /A/D/G/rho, creating revision 2. */
SVN_ERR(svn_fs_begin_txn2(&txn, fs, newrev, SVN_FS_TXN_CHECK_LOCKS, pool));
@@ -1009,6 +1030,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "/A/D/G/rho",
"new contents", pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(newrev));
/* We are now 'bubba'. */
SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
=== modified file 'subversion/tests/libsvn_fs_base/changes-test.c'
--- subversion/tests/libsvn_fs_base/changes-test.c 2011-01-05 22:45:51 +0000
+++ subversion/tests/libsvn_fs_base/changes-test.c 2011-03-22 11:15:25 +0000
@@ -595,6 +595,7 @@
SVN_ERR(svn_test__txn_script_exec(txn_root, script_entries, 5, subpool));
}
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/*** REVISION 2: Delete and add some stuff, non-depth-first. ***/
@@ -615,6 +616,7 @@
SVN_ERR(svn_test__txn_script_exec(txn_root, script_entries, 7, subpool));
}
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/*** TEST: We should have only three changes, the deletion of 'file1'
@@ -663,6 +665,7 @@
SVN_ERR(svn_test__txn_script_exec(txn_root, script_entries, 5, subpool));
}
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/*** REVISION 4: Do the same stuff as in revision 2, but use a copy
@@ -687,6 +690,7 @@
SVN_ERR(svn_fs_make_dir(txn_root, "dir4", subpool));
}
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/*** TEST: We should have only three changes, the deletion of 'file1'
=== modified file 'subversion/tests/libsvn_fs_base/fs-base-test.c'
--- subversion/tests/libsvn_fs_base/fs-base-test.c 2009-11-17 02:16:23 +0000
+++ subversion/tests/libsvn_fs_base/fs-base-test.c 2011-03-22 11:15:25 +0000
@@ -476,6 +476,7 @@
SVN_ERR(svn_fs_begin_txn(&txn4, fs, 0, pool));
SVN_ERR(svn_fs_txn_name(&txn4_name, txn4, pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &new_rev, txn4, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(new_rev));
err = svn_fs_abort_txn(txn4, pool);
if (! err)
return svn_error_create
@@ -874,6 +875,7 @@
/* Commit the greek tree. */
SVN_ERR(svn_fs_commit_txn(NULL, &new_rev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(new_rev));
/* Create new transaction. */
SVN_ERR(svn_fs_begin_txn(&txn, fs, new_rev, pool));
@@ -1208,6 +1210,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, spool));
SVN_ERR(svn_test__create_greek_tree(txn_root, spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/*** Revision 2: Copy A/D to A/D3 ***/
@@ -1216,6 +1219,7 @@
SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest_rev, spool));
SVN_ERR(svn_fs_copy(rev_root, "A/D", txn_root, "A/D3", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/*** Revision 3: Copy A/D/G to A/D/G2 ***/
@@ -1224,6 +1228,7 @@
SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest_rev, spool));
SVN_ERR(svn_fs_copy(rev_root, "A/D/G", txn_root, "A/D/G2", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/*** Revision 4: Copy A/D to A/D2 and create up and I in the existing
@@ -1239,6 +1244,7 @@
SVN_ERR(svn_fs_make_dir(txn_root, "A/D2/G2/I", spool));
SVN_ERR(svn_fs_make_file(txn_root, "A/D2/G2/up", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/*** Revision 5: Create A/D3/down and A/D3/J ***/
@@ -1247,6 +1253,7 @@
SVN_ERR(svn_fs_make_file(txn_root, "A/D3/down", spool));
SVN_ERR(svn_fs_make_dir(txn_root, "A/D3/J", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
{
@@ -1338,6 +1345,7 @@
SVN_ERR(svn_fs_make_file(txn_root, "f", subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "f", f->data, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
SVN_ERR(svn_fs_deltify_revision(fs, youngest_rev, subpool));
svn_pool_clear(subpool);
@@ -1352,6 +1360,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "f", f->data, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
SVN_ERR(svn_fs_deltify_revision(fs, youngest_rev, subpool));
svn_pool_clear(subpool);
}
@@ -1416,6 +1425,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/* In a transaction, copy A to Z. */
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, pool));
@@ -1491,6 +1501,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 2: Start to change "iota", but don't complete the work. */
@@ -1507,6 +1518,7 @@
testing that misbehaving callers don't introduce more damage to
the repository than they have to. */
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Fetch changed paths for the youngest revision. We should find none. */
=== modified file 'subversion/tests/libsvn_fs_fs/fs-pack-test.c'
--- subversion/tests/libsvn_fs_fs/fs-pack-test.c 2010-06-21 11:53:14 +0000
+++ subversion/tests/libsvn_fs_fs/fs-pack-test.c 2011-03-22 11:15:25 +0000
@@ -132,6 +132,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_fs_commit_txn(&conflict, &after_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(after_rev));
/* Revisions 2-11: A bunch of random changes. */
iterpool = svn_pool_create(subpool);
@@ -145,6 +146,7 @@
iterpool),
iterpool));
SVN_ERR(svn_fs_commit_txn(&conflict, &after_rev, txn, iterpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(after_rev));
}
svn_pool_destroy(iterpool);
svn_pool_destroy(subpool);
@@ -363,6 +365,7 @@
"How much better is it to get wisdom than gold! and to get "
"understanding rather to be chosen than silver!", pool));
SVN_ERR(svn_fs_commit_txn(&conflict, &after_rev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(after_rev));
return SVN_NO_ERROR;
}
=== modified file 'subversion/tests/libsvn_repos/repos-test.c'
--- subversion/tests/libsvn_repos/repos-test.c 2009-11-17 02:16:23 +0000
+++ subversion/tests/libsvn_repos/repos-test.c 2011-03-22 11:15:25 +0000
@@ -91,6 +91,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/***********************************************************************/
/* REVISION 1 */
@@ -152,6 +153,7 @@
subpool));
}
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/***********************************************************************/
/* REVISION 2 */
@@ -206,6 +208,7 @@
SVN_ERR(svn_test__txn_script_exec(txn_root, script_entries, 4, subpool));
}
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/***********************************************************************/
/* REVISION 3 */
@@ -259,6 +262,7 @@
txn_root, "A/B/epsilon",
subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/***********************************************************************/
/* REVISION 4 */
@@ -398,6 +402,7 @@
/* Create and commit the greek tree. */
SVN_ERR(svn_test__create_greek_tree(txn_root, pool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/* Now, commit again, this time after copying a directory, and then
deleting some paths under that directory. */
@@ -408,6 +413,7 @@
SVN_ERR(svn_fs_delete(txn_root, "Z/D/G/rho", pool));
SVN_ERR(svn_fs_delete(txn_root, "Z/D/H", pool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/* Now, we run the node_tree editor code, and see that a) it doesn't
bomb out, and b) that our nodes are all good. */
@@ -545,6 +551,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, spool));
SVN_ERR(svn_test__create_greek_tree(txn_root, spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/* Revision 2 - mu, alpha, omega */
@@ -554,6 +561,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "A/B/E/alpha", "2", spool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/H/omega", "2", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/* Revision 3 - iota, lambda, psi, omega */
@@ -564,6 +572,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/H/psi", "3", spool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/H/omega", "3", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/* Revision 4 - iota, beta, gamma, pi, rho */
@@ -575,6 +584,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/G/pi", "4", spool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/G/rho", "4", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/* Revision 5 - mu, alpha, tau, chi */
@@ -585,6 +595,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/G/tau", "5", spool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/H/chi", "5", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/* Revision 6 - move A/D to A/Z */
@@ -594,6 +605,7 @@
SVN_ERR(svn_fs_copy(rev_root, "A/D", txn_root, "A/Z", spool));
SVN_ERR(svn_fs_delete(txn_root, "A/D", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/* Revision 7 - edit A/Z/G/pi */
@@ -601,6 +613,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, spool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A/Z/G/pi", "7", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/* Revision 8 - move A/Z back to A/D, edit iota */
@@ -611,6 +624,7 @@
SVN_ERR(svn_fs_delete(txn_root, "A/Z", spool));
SVN_ERR(svn_test__set_file_contents(txn_root, "iota", "8", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/* Revision 9 - copy A/D/G to A/D/Q */
@@ -619,6 +633,7 @@
SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest_rev, spool));
SVN_ERR(svn_fs_copy(rev_root, "A/D/G", txn_root, "A/D/Q", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/* Revision 10 - edit A/D/Q/pi and A/D/Q/rho */
@@ -627,6 +642,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/Q/pi", "10", spool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/Q/rho", "10", spool));
SVN_ERR(svn_fs_commit_txn(NULL, &youngest_rev, txn, spool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(spool);
/* Now, it's time to verify our results. */
@@ -793,6 +809,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Move a file. Rev 2. */
@@ -801,6 +818,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_fs_copy(root, "/A/mu", txn_root, "/mu.new", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
{
struct locations_info info[] =
{
@@ -848,6 +866,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_fs_make_dir(txn_root, "/foo", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 2: Copy /foo to /bar, and add /bar/baz */
@@ -857,6 +876,7 @@
SVN_ERR(svn_fs_copy(root, "/foo", txn_root, "/bar", subpool));
SVN_ERR(svn_fs_make_file(txn_root, "/bar/baz", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 3: Modify /bar/baz */
@@ -864,6 +884,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "/bar/baz", "brrt", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 4: Modify /bar/baz again */
@@ -871,6 +892,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "/bar/baz", "bzzz", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Now, check locations. */
@@ -1061,6 +1083,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
SVN_ERR(svn_fs_create_access(&fs_access, "user1", pool));
@@ -1413,6 +1436,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/* Load the authz rules for the greek tree. */
authz_contents =
@@ -1631,6 +1655,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, subpool));
SVN_ERR(svn_fs_txn_name(&txn_name, txn, subpool));
@@ -1817,6 +1842,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 2: Modify A/D/H/chi and A/B/E/alpha. */
@@ -1825,6 +1851,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/H/chi", "2", subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A/B/E/alpha", "2", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 3: Copy A/D to A/D2. */
@@ -1833,6 +1860,7 @@
SVN_ERR(svn_fs_revision_root(&root, fs, youngest_rev, subpool));
SVN_ERR(svn_fs_copy(root, "A/D", txn_root, "A/D2", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 4: Modify A/D/H/chi and A/D2/H/chi. */
@@ -1841,6 +1869,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D/H/chi", "4", subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "A/D2/H/chi", "4", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 5: Delete A/D2/G. */
@@ -1848,6 +1877,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_fs_delete(txn_root, "A/D2/G", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 6: Restore A/D2/G (from version 4). */
@@ -1856,6 +1886,7 @@
SVN_ERR(svn_fs_revision_root(&root, fs, 4, subpool));
SVN_ERR(svn_fs_copy(root, "A/D2/G", txn_root, "A/D2/G", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 7: Move A/D2 to A/D (replacing it). */
@@ -1866,6 +1897,7 @@
SVN_ERR(svn_fs_copy(root, "A/D2", txn_root, "A/D", subpool));
SVN_ERR(svn_fs_delete(txn_root, "A/D2", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Check locations for /@HEAD. */
@@ -2010,6 +2042,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Revision 2: make a bunch of changes */
@@ -2032,6 +2065,7 @@
subpool));
}
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
svn_pool_clear(subpool);
/* Confirm the contents of r2. */
@@ -2369,6 +2403,7 @@
SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/* Revision 2: Tweak A/mu and A/B/E/alpha. */
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, subpool));
@@ -2378,6 +2413,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "A/B/E/alpha",
"Revision 2", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
/* Revision 3: Tweak A/B/E/alpha and A/B/E/beta. */
SVN_ERR(svn_fs_begin_txn(&txn, fs, youngest_rev, subpool));
@@ -2387,6 +2423,7 @@
SVN_ERR(svn_test__set_file_contents(txn_root, "A/B/E/beta",
"Revision 3", subpool));
SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
+ SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
for (start = 0; start <= youngest_rev; start++)
=== modified file 'subversion/tests/svn_test.h'
--- subversion/tests/svn_test.h 2009-11-17 02:16:23 +0000
+++ subversion/tests/svn_test.h 2011-03-22 11:15:25 +0000
@@ -35,6 +35,17 @@
#endif /* __cplusplus */
+/** Handy macro to test a condition, returning SVN_ERR_TEST_FAILED if FALSE
+ *
+ * This macro should be used in place of SVN_ERR_ASSERT() since we don't
+ * want to core-dump the test.
+ */
+#define SVN_TEST_ASSERT(expr) \
+ do { \
+ if (!(expr)) \
+ return svn_error_create(SVN_ERR_TEST_FAILED, NULL, #expr); \
+ } while (0)
+
/* Baton for any arguments that need to be passed from main() to svn
* test functions.
*/
Follow ups