[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [test fail] Re: svn commit: r39093 - in trunk/subversion: libsvn_wc tests/cmdline

From: Stephen Butler <sbutler_at_elego.de>
Date: Thu, 03 Sep 2009 11:01:34 +0200

Quoting Neels Janosch Hofmeyr <neels_at_elego.de>:

> Stephen Butler wrote:
>> Author: sbutler
>> Date: Wed Sep 2 16:35:11 2009
>> New Revision: 39093
>>
>> Log:
>> Fix WC-NG handling of "orphaned" items in a replaced dir.
>>
>> "Orphans" are items deleted by a merge that are within a replaced
>> tree, but aren't themselve replaced by the incoming copy operation.
>> They should remain deleted, but were being corrupted.
>>
>> This fix also eliminates the nonsensical "deleted with history" status
>> that used to be displayed for orphaned items.
>>
>> * subversion/libsvn_wc/entries.c
>> (write_entry): Fix the logic for translating schedule-delete entries
>> to wc_db rows.
>>
>> * subversion/libsvn_wc/adm_ops.c
>> (mark_tree): Don't set the "copied" flag for orphans.
>> (process_committed_leaf): Relax an assertion that assumes the copied
>> flag is set for orphans.
>>
>> * subversion/tests/cmdline/copy_tests.py
>> (wc_to_wc_copy_deleted):
>> * subversion/tests/cmdline/revert_tests.py
>> (status_of_missing_dir_after_revert_replaced_with_history_dir):
>> Tweak status expectations for orphaned items: show the wc-rev,
>> don't show the '+' ("with history").
>>
>> * subversion/tests/cmdline/merge_tests.py
>> (copy_then_replace_via_merge): Tweak status expectations. Add
>> update and commit to check for WC corruption.
>> (test_list): Remove XFail() from copy_then_replace_via_merge().
>
> Hi Steve,
>
> hm, this test fails on my side!
> I did a clean checkout & build and got this:
>
> [[[
> $ ./merge_tests.py 134
> subversion/svn/commit-cmd.c:142: (apr_err=160020)
> subversion/libsvn_client/commit.c:853: (apr_err=160020)
> svn: Commit failed (details follow):
> subversion/libsvn_client/commit_util.c:1673: (apr_err=160020)
> subversion/libsvn_delta/path_driver.c:251: (apr_err=160020)
> subversion/libsvn_client/commit_util.c:1469: (apr_err=160020)
> subversion/libsvn_repos/commit.c:364: (apr_err=160020)
> subversion/libsvn_fs_fs/tree.c:1871: (apr_err=160020)
> svn: File already exists: filesystem
> '/home/neels/svn/patch/subversion/tests/cmdline/svn-test-work/repositories/merge_tests-134/db',
> transaction '6-6', path '/branch/J/M'
> Traceback (most recent call last):
> File "/home/neels/svn/patch/subversion/tests/cmdline/svntest/main.py",
> line 1166, in run
> rc = self.pred.run(sandbox)
> File "/home/neels/svn/patch/subversion/tests/cmdline/svntest/testcase.py",
> line 129, in run
> return self.func(sandbox)
> File "./merge_tests.py", line 16220, in copy_then_replace_via_merge
> None, branch_J)
> File "/home/neels/svn/patch/subversion/tests/cmdline/svntest/actions.py",
> line 1205, in run_and_verify_commit
> *args)
> File "/home/neels/svn/patch/subversion/tests/cmdline/svntest/main.py",
> line 598, in run_svn
> *(_with_auth(_with_config_dir(varargs))))
> File "/home/neels/svn/patch/subversion/tests/cmdline/svntest/main.py",
> line 366, in run_command
> None, *varargs)
> File "/home/neels/svn/patch/subversion/tests/cmdline/svntest/main.py",
> line 531, in run_command_stdin
> raise Failure
> Failure
> FAIL: merge_tests.py 134: copy then replace via merge
> ]]]
>
> And I don't know what to make of it, really. Hopefully you know?

Strange. I don't know how that passed 'make check'. But a
distclean and make cause the error to appear for me too. I just
committed r39098 which XFails this test (for now).

What's really weird, is that if I eliminate the 'svn up' between
the merge and the commit, the test passes!

Steve

>> ==============================================================================
>> --- trunk/subversion/tests/cmdline/merge_tests.py Wed Sep 2
>> 16:02:04 2009 (r39092)
>> +++ trunk/subversion/tests/cmdline/merge_tests.py Wed Sep 2
>> 16:35:11 2009 (r39093)
>> @@ -16211,14 +16211,14 @@ def copy_then_replace_via_merge(sbox):
>> main.run_svn(None, 'merge', url_A, branch)
>>
>> # Check status:
>> - # sigma and K from r4 were deleted
>> - # theta and L from r4 were replaced by r6
>> - # omega and M were added (from r6)
>> + # sigma and K are deleted (not copied!)
>> + # theta and L are replaced (deleted then copied-here)
>> + # omega and M are copied-here
>> expected_status = wc.State(branch_J, {
>> '' : Item(status='R ', copied='+', wc_rev='-'),
>> - 'sigma' : Item(status='D ', copied='+', wc_rev='-'),
>> - 'K' : Item(status='D ', copied='+', wc_rev='-'),
>> - 'K/zeta' : Item(status='D ', copied='+', wc_rev='-'),
>> + 'sigma' : Item(status='D ', wc_rev=6),
>> + 'K' : Item(status='D ', wc_rev=6),
>> + 'K/zeta' : Item(status='D ', wc_rev=6),
>> 'theta' : Item(status=' ', copied='+', wc_rev='-'),
>> 'L' : Item(status=' ', copied='+', wc_rev='-'),
>> 'L/zeta' : Item(status=' ', copied='+', wc_rev='-'),
>> @@ -16228,6 +16228,25 @@ def copy_then_replace_via_merge(sbox):
>> })
>> actions.run_and_verify_status(branch_J, expected_status)
>>
>> + # Update and commit, just to make sure the WC isn't busted.
>> + main.run_svn(None, 'up', branch_J)
>> + expected_output = wc.State(branch_J, {
>> + '' : Item(verb='Replacing'),
>> + })
>> + expected_status = wc.State(branch_J, {
>> + '' : Item(status=' ', wc_rev=7),
>> + 'theta' : Item(status=' ', wc_rev=7),
>> + 'L' : Item(status=' ', wc_rev=7),
>> + 'L/zeta' : Item(status=' ', wc_rev=7),
>> + 'omega' : Item(status=' ', wc_rev=7),
>> + 'M' : Item(status=' ', wc_rev=7),
>> + 'M/zeta' : Item(status=' ', wc_rev=7),
>> + })
>> + actions.run_and_verify_commit(branch_J,
>> + expected_output,
>> + expected_status,
>> + None, branch_J)
>> +
>> #----------------------------------------------------------------------
>>
>> def merge_replace_causes_tree_conflict2(sbox):

-- 
Stephen Butler | Software Developer
elego Software Solutions GmbH
Gustav-Meyer-Allee 25 | 13355 Berlin | Germany
fon: +49 30 2345 8696 | mobile: +49 163 25 45 015
fax: +49 30 2345 8695 | http://www.elegosoft.com
Geschäftsführer: Olaf Wagner | Sitz der Gesellschaft: Berlin
Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2390567
Received on 2009-09-03 15:02:34 CEST

This is an archived mail posted to the Subversion Dev mailing list.