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