It turned out to be fairly easy to backport the upstream changes. Here's the patch:
--- subversion-1.5.1dfsg1.orig/subversion/tests/cmdline/merge_tests.py
+++ subversion-1.5.1dfsg1/subversion/tests/cmdline/merge_tests.py
@@ -12523,6 +12523,220 @@
svntest.actions.run_and_verify_svn(None, ["At revision 5.\n"], [], 'up',
wc_dir)
+def subtree_merges_dont_cause_spurious_conflicts(sbox):
+ "subtree merges dont cause spurious conflicts"
+
+ # Fix a merge bug where previous merges are incorrectly reversed leading
+ # to repeat merges and spurious conflicts. These can occur when a subtree
+ # needs a range M:N merged that is older than the ranges X:Y needed by the
+ # merge target *and* there are changes in the merge source between N:X that
+ # affect parts of the merge target other than the subtree. An actual case
+ # where our own epository encountered this problem is described here:
+ # http://subversion.tigris.org/servlets/ReadMsg?listName=dev&msgNo=141832
+
+ sbox.build()
+ wc_dir = sbox.wc_dir
+
+ # Some paths we'll care about
+ rho_path = os.path.join(wc_dir, "A", "D", "G", "rho")
+ A_COPY_path = os.path.join(wc_dir, "A_COPY")
+ psi_COPY_path = os.path.join(wc_dir, "A_COPY", "D", "H", "psi")
+
+ # Make a branch to merge to.
+ wc_disk, wc_status = set_up_branch(sbox, False, 1)
+
+ # r7 Make a text change to A/D/G/rho.
+ svntest.main.file_write(rho_path, "Newer content")
+ expected_output = wc.State(wc_dir, {'A/D/G/rho' : Item(verb='Sending')})
+ wc_status.tweak('A/D/G/rho', wc_rev=7)
+ svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+ wc_status, None, wc_dir)
+ wc_disk.tweak('A/D/G/rho', contents="Newer content")
+
+ # r8 Make another text change to A/D/G/rho.
+ svntest.main.file_write(rho_path, "Even *newer* content")
+ expected_output = wc.State(wc_dir, {'A/D/G/rho' : Item(verb='Sending')})
+ wc_status.tweak('A/D/G/rho', wc_rev=8)
+ svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+ wc_status, None, wc_dir)
+ wc_disk.tweak('A/D/G/rho', contents="Even *newer* content")
+
+ # Update the WC to allow full mergeinfo inheritance and elision.
+ svntest.actions.run_and_verify_svn(None, ["At revision 8.\n"], [], 'up',
+ wc_dir)
+ wc_status.tweak(wc_rev=8)
+
+ # r9 Merge r0:7 from A to A_COPY, then create a subtree with differing
+ # mergeinfo under A_COPY by reverse merging r3 from A_COPY/D/H/psi.
+ #
+ # Search for the comment entitled "The Merge Kluge" elsewhere in
+ # this file, to understand why we shorten and chdir() below.
+ short_A_COPY_path = shorten_path_kludge(A_COPY_path)
+ expected_output = wc.State(short_A_COPY_path, {
+ 'B/E/beta' : Item(status='U '),
+ 'D/G/rho' : Item(status='U '),
+ 'D/H/omega' : Item(status='U '),
+ 'D/H/psi' : Item(status='U '),
+ })
+ expected_status = wc.State(short_A_COPY_path, {
+ '' : Item(status=' M', wc_rev=8),
+ 'B' : Item(status=' ', wc_rev=8),
+ 'mu' : Item(status=' ', wc_rev=8),
+ 'B/E' : Item(status=' ', wc_rev=8),
+ 'B/E/alpha' : Item(status=' ', wc_rev=8),
+ 'B/E/beta' : Item(status='M ', wc_rev=8),
+ 'B/lambda' : Item(status=' ', wc_rev=8),
+ 'B/F' : Item(status=' ', wc_rev=8),
+ 'C' : Item(status=' ', wc_rev=8),
+ 'D' : Item(status=' ', wc_rev=8),
+ 'D/G' : Item(status=' ', wc_rev=8),
+ 'D/G/pi' : Item(status=' ', wc_rev=8),
+ 'D/G/rho' : Item(status='M ', wc_rev=8),
+ 'D/G/tau' : Item(status=' ', wc_rev=8),
+ 'D/gamma' : Item(status=' ', wc_rev=8),
+ 'D/H' : Item(status=' ', wc_rev=8),
+ 'D/H/chi' : Item(status=' ', wc_rev=8),
+ 'D/H/psi' : Item(status='M ', wc_rev=8),
+ 'D/H/omega' : Item(status='M ', wc_rev=8),
+ })
+ expected_disk = wc.State('', {
+ '' : Item(props={SVN_PROP_MERGEINFO : '/A:2-7'}),
+ 'B' : Item(),
+ 'mu' : Item("This is the file 'mu'.\n"),
+ 'B/E' : Item(),
+ 'B/E/alpha' : Item("This is the file 'alpha'.\n"),
+ 'B/E/beta' : Item("New content"),
+ 'B/lambda' : Item("This is the file 'lambda'.\n"),
+ 'B/F' : Item(),
+ 'C' : Item(),
+ 'D' : Item(),
+ 'D/G' : Item(),
+ 'D/G/pi' : Item("This is the file 'pi'.\n"),
+ 'D/G/rho' : Item("Newer content"),
+ 'D/G/tau' : Item("This is the file 'tau'.\n"),
+ 'D/gamma' : Item("This is the file 'gamma'.\n"),
+ 'D/H' : Item(),
+ 'D/H/chi' : Item("This is the file 'chi'.\n"),
+ 'D/H/psi' : Item("New content",),
+ 'D/H/omega' : Item("New content"),
+ })
+ expected_skip = wc.State(short_A_COPY_path, { })
+ saved_cwd = os.getcwd()
+ os.chdir(svntest.main.work_dir)
+ svntest.actions.run_and_verify_merge(short_A_COPY_path, '0', '7',
+ sbox.repo_url + '/A',
+ expected_output, expected_disk,
+ expected_status, expected_skip,
+ None, None, None, None, None, 1)
+ # run_and_verify_merge doesn't support merging to a file WCPATH
+ # so use run_and_verify_svn.
+ short_psi_COPY_path = shorten_path_kludge(psi_COPY_path)
+ svntest.actions.run_and_verify_svn(None,
+ expected_merge_output([[-3]],
+ 'G ' + short_psi_COPY_path + '\n'),
+ [], 'merge', '-c-3',
+ sbox.repo_url + '/A/D/H/psi',
+ short_psi_COPY_path)
+ os.chdir(saved_cwd)
+ # Commit the two merges.
+ expected_output = svntest.wc.State(wc_dir, {
+ 'A_COPY' : Item(verb='Sending'),
+ 'A_COPY/B/E/beta' : Item(verb='Sending'),
+ 'A_COPY/D/G/rho' : Item(verb='Sending'),
+ 'A_COPY/D/H/psi' : Item(verb='Sending'),
+ 'A_COPY/D/H/omega' : Item(verb='Sending'),
+ })
+ wc_status.tweak('A_COPY',
+ 'A_COPY/B/E/beta',
+ 'A_COPY/D/G/rho',
+ 'A_COPY/D/H/psi',
+ 'A_COPY/D/H/omega',
+ wc_rev=9)
+ svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+ wc_status, None, wc_dir)
+
+ # Update the WC to allow full mergeinfo inheritance and elision.
+ svntest.actions.run_and_verify_svn(None, ["At revision 9.\n"], [], 'up',
+ wc_dir)
+ wc_status.tweak(wc_rev=9)
+
+ # r9 Merge all available revisions from A to A_COPY.
+ #
+ # This is where the bug revealed itself, instead of cleanly merging
+ # just r3 and then r8-9, the first merge editor drive of r3 set A_COPY
+ # to the state it was in r7, effectively reverting the merge committed
+ # in r9. So we saw unexpected merges to omega, rho, and beta, as they
+ # are returned to their r7 state and then a conflict on rho as the editor
+ # attempted to merge r8:
+ #
+ # trunk>svn merge %url%/A merge_tests-104\A_COPY
+ # --- Merging r3 into 'merge_tests-104\A_COPY\D\H\psi':
+ # U merge_tests-104\A_COPY\D\H\psi
+ # --- Merging r8 through r9 into 'merge_tests-104\A_COPY':
+ # U merge_tests-104\A_COPY\D\H\omega
+ # U merge_tests-104\A_COPY\D\G\rho
+ # U merge_tests-104\A_COPY\B\E\beta
+ # Conflict discovered in 'merge_tests-104/A_COPY/D/G/rho'.
+ # Select: (p) postpone, (df) diff-full, (e) edit,
+ # (mc) mine-conflict, (tc) theirs-conflict,
+ # (s) show all options: p
+ # --- Merging r8 through r9 into 'merge_tests-104\A_COPY':
+ # C merge_tests-104\A_COPY\D\G\rho
+ expected_output = wc.State(short_A_COPY_path, {
+ 'D/G/rho' : Item(status='U '),
+ 'D/H/psi' : Item(status='U '),
+ })
+ expected_status = wc.State(short_A_COPY_path, {
+ '' : Item(status=' M', wc_rev=9),
+ 'B' : Item(status=' ', wc_rev=9),
+ 'mu' : Item(status=' ', wc_rev=9),
+ 'B/E' : Item(status=' ', wc_rev=9),
+ 'B/E/alpha' : Item(status=' ', wc_rev=9),
+ 'B/E/beta' : Item(status=' ', wc_rev=9),
+ 'B/lambda' : Item(status=' ', wc_rev=9),
+ 'B/F' : Item(status=' ', wc_rev=9),
+ 'C' : Item(status=' ', wc_rev=9),
+ 'D' : Item(status=' ', wc_rev=9),
+ 'D/G' : Item(status=' ', wc_rev=9),
+ 'D/G/pi' : Item(status=' ', wc_rev=9),
+ 'D/G/rho' : Item(status='M ', wc_rev=9),
+ 'D/G/tau' : Item(status=' ', wc_rev=9),
+ 'D/gamma' : Item(status=' ', wc_rev=9),
+ 'D/H' : Item(status=' ', wc_rev=9),
+ 'D/H/chi' : Item(status=' ', wc_rev=9),
+ 'D/H/psi' : Item(status='MM', wc_rev=9),
+ 'D/H/omega' : Item(status=' ', wc_rev=9),
+ })
+ expected_disk = wc.State('', {
+ '' : Item(props={SVN_PROP_MERGEINFO : '/A:2-9'}),
+ 'B' : Item(),
+ 'mu' : Item("This is the file 'mu'.\n"),
+ 'B/E' : Item(),
+ 'B/E/alpha' : Item("This is the file 'alpha'.\n"),
+ 'B/E/beta' : Item("New content"),
+ 'B/lambda' : Item("This is the file 'lambda'.\n"),
+ 'B/F' : Item(),
+ 'C' : Item(),
+ 'D' : Item(),
+ 'D/G' : Item(),
+ 'D/G/pi' : Item("This is the file 'pi'.\n"),
+ 'D/G/rho' : Item("Even *newer* content"),
+ 'D/G/tau' : Item("This is the file 'tau'.\n"),
+ 'D/gamma' : Item("This is the file 'gamma'.\n"),
+ 'D/H' : Item(),
+ 'D/H/chi' : Item("This is the file 'chi'.\n"),
+ 'D/H/psi' : Item("New content"), # Mergeinfo elides to A_COPY
+ 'D/H/omega' : Item("New content"),
+ })
+ expected_skip = wc.State(short_A_COPY_path, { })
+ os.chdir(svntest.main.work_dir)
+ svntest.actions.run_and_verify_merge(short_A_COPY_path, None, None,
+ sbox.repo_url + '/A',
+ expected_output, expected_disk,
+ expected_status, expected_skip,
+ None, None, None, None, None, 1, 0)
+ os.chdir(saved_cwd)
+
########################################################################
# Run the tests
@@ -12696,6 +12910,8 @@
SkipUnless(subtrees_with_empty_mergeinfo, server_has_mergeinfo),
SkipUnless(commit_to_subtree_added_by_merge,
svntest.main.is_ra_type_dav),
+ SkipUnless(subtree_merges_dont_cause_spurious_conflicts,
+ server_has_mergeinfo),
]
if __name__ == '__main__':
--- subversion-1.5.1dfsg1.orig/subversion/libsvn_client/merge.c
+++ subversion-1.5.1dfsg1/subversion/libsvn_client/merge.c
@@ -2759,17 +2759,33 @@
}
else if (children_with_mergeinfo && children_with_mergeinfo->nelts)
{
+ /* Get the merge target's svn_client__merge_path_t, which is always
+ the first in the array due to depth first sorting requirement,
+ see 'THE CHILDREN_WITH_MERGEINFO ARRAY'. */
svn_client__merge_path_t *child =
APR_ARRAY_IDX(children_with_mergeinfo, 0,
svn_client__merge_path_t *);
if (child->remaining_ranges->nelts)
{
- /* The merge target needs something merged, but it might
- not be the entire REVISION1:REVISION2 range. */
+ /* The merge target has remaining revisions to merge. These
+ ranges may fully or partially overlap the range described
+ by REVISION1:REVISION2 or may not intersect that range at
+ all. */
svn_merge_range_t *range =
APR_ARRAY_IDX(child->remaining_ranges, 0,
svn_merge_range_t *);
- target_start = range->start;
+ if ((!is_rollback && range->start > revision2)
+ || (is_rollback && range->start < revision2))
+ {
+ /* Merge target's first remaining range doesn't intersect. */
+ target_start = revision2;
+ }
+ else
+ {
+ /* Merge target's first remaining range partially or
+ fully overlaps. */
+ target_start = range->start;
+ }
}
}
}
--- END ---
All the core tests pass (including the new one) with this patch applied.
A couple of Java tests fail but this appears to be expected. The test
log follows.
Ben.
/usr/bin/make -f debian/rules check-swig-py check-swig-pl check-swig-rb
make[1]: Entering directory `/tmp/buildd/subversion-1.5.1dfsg1'
set -e; for v in 2.5 2.4; do rm -f BUILD/subversion/bindings/swig/python; ln
-fs python$v BUILD/subversion/bindings/swig/python; /usr/bin/make -C BUILD
check-swig-py PYTHON=python$v PYVER=$v CLEANUP=true LC_ALL=C; done
make[2]: Entering directory `/tmp/buildd/subversion-1.5.1dfsg1/BUILD'
cd /tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/python; \
python2.5
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/python/tests/run_all.py
.........................................................................................................
----------------------------------------------------------------------
Ran 105 tests in 60.525s
OK
make[2]: Leaving directory `/tmp/buildd/subversion-1.5.1dfsg1/BUILD'
make[2]: Entering directory `/tmp/buildd/subversion-1.5.1dfsg1/BUILD'
cd /tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/python; \
python2.4
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/python/tests/run_all.py
.........................................................................................................
----------------------------------------------------------------------
Ran 105 tests in 57.458s
OK
make[2]: Leaving directory `/tmp/buildd/subversion-1.5.1dfsg1/BUILD'
/usr/bin/make -C BUILD check-swig-pl CLEANUP=true LC_ALL=C
make[2]: Entering directory `/tmp/buildd/subversion-1.5.1dfsg1/BUILD'
if test "/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/perl"
!= "/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl"; then \
ln -sf
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/*.c
/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/perl/native; \
fi
cd
/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/perl/native;
/usr/bin/make
make[3]: Entering directory
`/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/perl/native'
make[3]: Leaving directory
`/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/perl/native'
cd
/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/perl/native;
/usr/bin/make test
make[3]: Entering directory
`/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/perl/native'
PERL_DL_NONLAZY=1
LD_LIBRARY_PATH=/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/perl/libsvn_swig_perl/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_client/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_delta/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_fs/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_ra/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_repos/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_wc/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_diff/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_subr/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_ra_local/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_ra_svn/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_ra_neon/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_ra_serf/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_fs_base/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_fs_util/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_fs_fs/.libs
/usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib',
'blib/arch')"
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/*.t
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/0use.............ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/1repos...........#
committed 1,2008-12-24T01:53:02.059842Z,root
# committed 2,2008-12-24T01:53:02.079638Z,root
# committed 3,2008-12-24T01:53:02.103878Z,root
# cleanup
ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/2fs..............#
cleanup
ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/3client..........#
cleanup
ok
7/118 skipped: various reasons
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/4pool............#
cleanup
ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/5delta-compat....ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/5delta...........ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/6ra..............#
cleanup
ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/7editor..........#
committed 1,2008-12-24T01:53:09.503775Z,root
ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/8lock............ok
All tests successful, 7 subtests skipped.
Files=10, Tests=213, 8 wallclock secs ( 1.87 cusr + 0.27 csys = 2.14 CPU)
make[3]: Leaving directory
`/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/perl/native'
make[2]: Leaving directory `/tmp/buildd/subversion-1.5.1dfsg1/BUILD'
/usr/bin/make -C BUILD/subversion/bindings/swig/perl/native test LC_ALL=C
make[2]: Entering directory
`/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/perl/native'
PERL_DL_NONLAZY=1
LD_LIBRARY_PATH=/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/perl/libsvn_swig_perl/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_client/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_delta/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_fs/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_ra/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_repos/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_wc/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_diff/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_subr/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_ra_local/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_ra_svn/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_ra_neon/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_ra_serf/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_fs_base/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_fs_util/.libs:/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/libsvn_fs_fs/.libs
/usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib',
'blib/arch')"
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/*.t
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/0use.............ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/1repos...........#
committed 1,2008-12-24T01:53:10.183783Z,root
# committed 2,2008-12-24T01:53:10.203919Z,root
# committed 3,2008-12-24T01:53:10.227653Z,root
# cleanup
ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/2fs..............#
cleanup
ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/3client..........#
cleanup
ok
7/118 skipped: various reasons
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/4pool............#
cleanup
ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/5delta-compat....ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/5delta...........ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/6ra..............#
cleanup
ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/7editor..........#
committed 1,2008-12-24T01:53:17.467914Z,root
ok
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/perl/native/t/8lock............ok
All tests successful, 7 subtests skipped.
Files=10, Tests=213, 8 wallclock secs ( 1.95 cusr + 0.21 csys = 2.16 CPU)
make[2]: Leaving directory
`/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/perl/native'
/usr/bin/make -C BUILD check-swig-rb CLEANUP=true LC_ALL=C
make[2]: Entering directory `/tmp/buildd/subversion-1.5.1dfsg1/BUILD'
cd /tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/swig/ruby; \
/usr/bin/ruby1.8 -I
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/ruby \
/tmp/buildd/subversion-1.5.1dfsg1/subversion/bindings/swig/ruby/test/run-test.rb
\
--verbose=normal
Loaded suite .
Started
....................................................................................................................................................................................................................
Finished in 481.695497 seconds.
212 tests, 1440 assertions, 0 failures, 0 errors
make[2]: Leaving directory `/tmp/buildd/subversion-1.5.1dfsg1/BUILD'
make[1]: Leaving directory `/tmp/buildd/subversion-1.5.1dfsg1'
# This fails on current free JVMs, according to Blair Zajac.
# Thus the "-" prefix, to ignore failure, for now.
/usr/bin/make -f debian/rules check-javahl
make[1]: Entering directory `/tmp/buildd/subversion-1.5.1dfsg1'
/usr/bin/make -C BUILD check-javahl CLEANUP=true LC_ALL=C
make[2]: Entering directory `/tmp/buildd/subversion-1.5.1dfsg1/BUILD'
/usr/lib/jvm/java-gcj/bin/java
"-Dtest.rootdir=/tmp/buildd/subversion-1.5.1dfsg1/BUILD/subversion/bindings/javahl/test-work"
"-Dtest.fstype="
-Djava.library.path=subversion/bindings/javahl/native/.libs:/usr/lib -classpath
subversion/bindings/javahl/classes:/usr/share/java/junit.jar "-Dtest.tests="
org.tigris.subversion.javahl.RunTests
...F.......................E...............
.......
Time: 143.119
There was 1 error:
1)
testBasicCatStream(org.tigris.subversion.javahl.BasicTests)java.lang.NullPointerException
at
org.tigris.subversion.javahl.SVNClientSynchronized.streamFileContent(SVNClientSynchronized.java:1519)
at
org.tigris.subversion.javahl.BasicTests.testBasicCatStream(BasicTests.java:1864)
at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
There was 1 failure:
1)
testLogDate(org.tigris.subversion.javahl.BasicTests)junit.framework.AssertionFailedError:
Failed to parse date 2007-10-04T03:00:52.134992Z
at org.tigris.subversion.javahl.BasicTests.testLogDate(BasicTests.java:93)
at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
FAILURES!!!
Tests run: 48, Failures: 1, Errors: 1
make[2]: *** [check-javahl] Error 1
make[2]: Leaving directory `/tmp/buildd/subversion-1.5.1dfsg1/BUILD'
make[1]: *** [check-javahl] Error 2
make[1]: Leaving directory `/tmp/buildd/subversion-1.5.1dfsg1'
make: [debian/stamp-build-arch] Error 2 (ignored)
# Run 'check' last, as it takes longest. 'cat tests.log' is for
# obtaining diagnostics from buildd logs.
make[1]: Entering directory `/tmp/buildd/subversion-1.5.1dfsg1'
/usr/bin/make -C BUILD check CLEANUP=true LC_ALL=C
make[2]: Entering directory `/tmp/buildd/subversion-1.5.1dfsg1/BUILD'
Running all tests in client-test [1/61]...success
Running all tests in compat-test [2/61]...success
Running all tests in config-test [3/61]...success
Running all tests in diff-diff3-test [4/61]...success
Running all tests in error-test [5/61]...success
Running all tests in fs-test [6/61]...success
Running all tests in hashdump-test [7/61]...success
Running all tests in locks-test [8/61]...success
Running all tests in mergeinfo-test [9/61]...success
Running all tests in opt-test [10/61]...success
Running all tests in path-test [11/61]...success
Running all tests in ra-local-test [12/61]...success
Running all tests in random-test [13/61]...success
Running all tests in repos-test [14/61]...success
Running all tests in revision-test [15/61]...success
Running all tests in stream-test [16/61]...success
Running all tests in string-test [17/61]...success
Running all tests in time-test [18/61]...success
Running all tests in translate-test [19/61]...success
Running all tests in utf-test [20/61]...success
Running all tests in target-test.py [21/61]...success
Running all tests in getopt_tests.py [22/61]...success
Running all tests in basic_tests.py [23/61]...success
Running all tests in checkout_tests.py [24/61]...success
Running all tests in commit_tests.py [25/61]...success
Running all tests in update_tests.py [26/61]...success
Running all tests in switch_tests.py [27/61]...success
Running all tests in prop_tests.py [28/61]...success
Running all tests in schedule_tests.py [29/61]...success
Running all tests in log_tests.py [30/61]...success
Running all tests in copy_tests.py [31/61]...success
Running all tests in diff_tests.py [32/61]...success
Running all tests in export_tests.py [33/61]...success
Running all tests in externals_tests.py [34/61]...success
Running all tests in merge_tests.py [35/61]...success
Running all tests in merge_authz_tests.py [36/61]...success
Running all tests in revert_tests.py [37/61]...success
Running all tests in mergeinfo_tests.py [38/61]...success
Running all tests in stat_tests.py [39/61]...success
Running all tests in trans_tests.py [40/61]...success
Running all tests in autoprop_tests.py [41/61]...success
Running all tests in blame_tests.py [42/61]...success
Running all tests in special_tests.py [43/61]...success
Running all tests in svnadmin_tests.py [44/61]...success
Running all tests in svnlook_tests.py [45/61]...success
Running all tests in svnversion_tests.py [46/61]...success
Running all tests in utf8_tests.py [47/61]...success
Running all tests in history_tests.py [48/61]...success
Running all tests in lock_tests.py [49/61]...success
Running all tests in cat_tests.py [50/61]...success
Running all tests in import_tests.py [51/61]...success
Running all tests in svnsync_tests.py [52/61]...success
Running all tests in authz_tests.py [53/61]...success
Running all tests in depth_tests.py [54/61]...success
Running all tests in svndumpfilter_tests.py [55/61]...success
Running all tests in changelist_tests.py [56/61]...success
Running all tests in changes-test [57/61]...success
Running all tests in fs-base-test [58/61]...success
Running all tests in key-test [59/61]...success
Running all tests in skel-test [60/61]...success
Running all tests in strings-reps-test [61/61]...success
At least one test was SKIPPED, checking
/tmp/buildd/subversion-1.5.1dfsg1/BUILD/tests.log
SKIP: update_tests.py 32: update wc on the root of a Windows (virtual) drive
SKIP: merge_tests.py 99: commits to subtrees added by merge wreak havoc
SKIP: merge_authz_tests.py 1: skipped paths get overriding mergeinfo
SKIP: utf8_tests.py 1: conversion of paths and logs to/from utf8
SKIP: svnsync_tests.py 14: verify that unreadable content is not synced
SKIP: svnsync_tests.py 15: verify that copies from unreadable dirs work
SKIP: svnsync_tests.py 16: verify copies with mods from unreadable dirs
SKIP: svnsync_tests.py 17: verify copies with mods from unreadable dirs +copy
SKIP: authz_tests.py 1: authz issue #2486 - open root
SKIP: authz_tests.py 2: authz issue #2486 - open directory
SKIP: authz_tests.py 3: broken authz files cause errors
SKIP: authz_tests.py 4: test authz for read operations
SKIP: authz_tests.py 5: test authz for write operations
SKIP: authz_tests.py 6: test authz for checkout
SKIP: authz_tests.py 7: test authz for log and tracing path changes
SKIP: authz_tests.py 8: test authz for checkout and update
SKIP: authz_tests.py 9: test authz for export with unreadable subfolder
SKIP: authz_tests.py 10: test authz for aliases
SKIP: authz_tests.py 11: test the authz validation rules
SKIP: authz_tests.py 12: test authz for locking
SKIP: authz_tests.py 13: authz issue #2712
SKIP: authz_tests.py 14: switched to directory, no read access on parents
--
Ben Hutchings
All the simple programs have been written, and all the good names taken.
signature.asc
Description: This is a digitally signed message part

