You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Martin Hauner <Ma...@gmx.net> on 2006/06/08 13:38:06 UTC

merge problem, svn: Directory 'xxx' is missing [Issue 2515]

Hi,

I'm trying to merge a new and very big vendor drop (ace/tao) into our trunk
and I'm receiving an error "working copy 'orbsvc' is missing or not locked"
with svn 1.3.

Since we have deleted parts of ace/tao (like the dir given in the error) on
trunk (we don't need it and it saves a lot of space) this looks like issue 2515.

I have build an svn client from trunk and used the description from issue 2515
to see if it works on trunk. It does not.

I could spend a few hours fixing the problem but actually i have no idea how
to fix it.

The error is created in svn_wc_adm_retrieve. The interesting code seems to be
the add_directory in libsvn_client/repos_diff.c.

If anyone could outline a fix, I could try to create a patch.


>	svn.exe!svn_wc_adm_retrieve(svn_wc_adm_access_t * *, svn_wc_adm_access_t *, const char *, apr_pool_t *) 	C
 	svn.exe!get_path_access(svn_wc_adm_access_t * *, svn_wc_adm_access_t *, const char *, int, apr_pool_t *) 	C
 	svn.exe!add_directory(const char *, void *, const char *, long, apr_pool_t *, void * *) 	C
 	svn.exe!add_directory(const char *, void *, const char *, long, apr_pool_t *, void * *) 	C
 	svn.exe!start_element(void *, int, const char *, const char *, const char * *) 	C
 	svn.exe!start_element(void *, const char *, const char * *) 	C
 	svn.exe!doContent(void *, int, const encoding *, const char *, const char *, const char * *) 	C
 	svn.exe!contentProcessor(void *, const char *, const char *, const char * *) 	C
 	svn.exe!doProlog(void *, const encoding *, const char *, const char *, int, const char *, const char * *) 	C
 	svn.exe!prologProcessor(void *, const char *, const char *, const char * *) 	C
 	svn.exe!prologInitProcessor(void *, const char *, const char *, const char * *) 	C
 	svn.exe!XML_ParseBuffer(void *, int, int) 	C
 	svn.exe!XML_Parse(void *, const char *, int, int) 	C
 	svn.exe!ne_xml_parse(ne_xml_parser_s *, const char *, unsigned int) 	C
 	svn.exe!parse_spool_file(const char *, ne_xml_parser_s *, apr_pool_t *) 	C
 	svn.exe!parsed_request(ne_session_s *, const char *, const char *, const char *, apr_file_t *, void (ne_xml_parser_s *, void *)*, const svn_ra_dav__xml_elm_t *, int, int (void *, int, int)*, int (void *, const svn_ra_dav__xml_elm_t *, const char * *)*, int (void *, const svn_ra_dav__xml_elm_t *, const char *)*, int (void *, int, const char *, const char *, const char * *)*, int (void *, int, const char *, unsigned int)*, int (void *, int, const char *, const char *)*, void *, apr_hash_t *, int *, int, apr_pool_t *) 	C
 	svn.exe!svn_ra_dav__parsed_request(ne_session_s *, const char *, const char *, const char *, apr_file_t *, void (ne_xml_parser_s *, void *)*, int (void *, int, const char *, const char *, const char * *)*, int (void *, int, const char *, unsigned int)*, int (void *, int, const char *, const char *)*, void *, apr_hash_t *, int *, int, apr_pool_t *) 	C
 	svn.exe!reporter_finish_report(void *, apr_pool_t *) 	C
 	svn.exe!do_merge(const char *, const char *, const svn_opt_revision_t *, const char *, const char *, const svn_opt_revision_t *, const svn_opt_revision_t *, const char *, svn_wc_adm_access_t *, int, int, int, const svn_wc_diff_callbacks2_t *, void *, svn_client_ctx_t *, apr_pool_t *) 	C
 	svn.exe!svn_client_merge_peg2(const char *, const svn_opt_revision_t *, const svn_opt_revision_t *, const svn_opt_revision_t *, const char *, int, int, int, int, const apr_array_header_t *, svn_client_ctx_t *, apr_pool_t *) 	C
 	svn.exe!svn_cl__merge(apr_getopt_t *, void *, apr_pool_t *) 	C
 	svn.exe!main(int, const char * *) 	C
 	svn.exe!__tmainCRTStartup() 	C
 	svn.exe!mainCRTStartup() 	C


-- 
Martin

Subcommander, http://subcommander.tigris.org
a cross platform Win32/Unix/MacOSX subversion gui
client & diff/merge tool.

Echte DSL-Flatrate dauerhaft für 0,- Euro*!
"Feel free" mit GMX DSL! http://www.gmx.net/de/go/dsl

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: PATCH Re: merge problem, svn: Directory 'xxx' is missing [Issue 2515]

Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On 6/9/06, Martin Hauner <Ma...@gmx.net> wrote:

> Alway passing TRUE seems to work. At least the diff and merge tests
> still run.

That's a good sign.  I don't know enough about libsvn_wc to say for
sure if that's the right solution, but once the test works you can
post it here with the patch for people to review.

> > A good first step would be writing a test case for the test suite though.
>
> Ok here is my try to create a test. Creating the test case works but I'm
> not sure what parameters I have to pass to the final merge call.
> What are the different Item parameter types? Do i have to use status or
> verb. Hmm...
>
> Another issue is that the test doesn't work, it produces some output but i
> have no idea what it is trying to tell me:
>
> =============================================================
> Expected __SVN_ROOT_NODE and actual __SVN_ROOT_NODE are different!
> =============================================================
> EXPECTED NODE TO BE:
> =============================================================
>  * Node name:   __SVN_ROOT_NODE
>     Path:       __SVN_ROOT_NODE
>     Contents:   None
>     Properties: {}
>     Attributes: {}
>     Children:   1
> =============================================================
> ACTUAL NODE FOUND:
> =============================================================
>  * Node name:   __SVN_ROOT_NODE
>     Path:       __SVN_ROOT_NODE
>     Contents:   None
>     Properties: {}
>     Attributes: {}
>     Children: is a file.
> Unequal Types: one Node is a file, the other is a directory
> EXCEPTION: SVNTreeUnequal
> FAIL:  merge_tests.py 32: merge an added dir on a deleted dir in target

The main problem was that you were constructing your expected disk
structure with the wrong path.  you started with svn-test-work/...,
when you really should have started with '' and then given paths
relative to I_path.  I agree, it's not exactly obvious what the
problem was, our test suite is nowhere near as straitforward as it
should be...

Here's an updated patch.  I also removed the expected status bit, but
I'm not sure if that's right or not.  I have only so much time to
fight with the test suite this morning, after all ;-)

-garrett

PATCH Re: merge problem, svn: Directory 'xxx' is missing [Issue 2515]

Posted by Martin Hauner <Ma...@gmx.net>.
Hi,

Garret Rooney wrote:
> On 6/8/06, Martin Hauner <Ma...@gmx.net> wrote:
> 
> > The error is created in svn_wc_adm_retrieve. The interesting code seems 
> to be
> > the add_directory in libsvn_client/repos_diff.c.
> >
> > If anyone could outline a fix, I could try to create a patch.
> 
> Perhaps making sure get_path_access is passed TRUE for it's leneint
> parameter, and then gracefully handling the case where you can't get
> that access baton would be enough?  I imagine you'd want to end up
> with action = skipped in those kind of cases, although I'm not
> positive.

Alway passing TRUE seems to work. At least the diff and merge tests
still run.

> A good first step would be writing a test case for the test suite though.

Ok here is my try to create a test. Creating the test case works but I'm
not sure what parameters I have to pass to the final merge call.
What are the different Item parameter types? Do i have to use status or
verb. Hmm...

Another issue is that the test doesn't work, it produces some output but i 
have no idea what it is trying to tell me:

=============================================================
Expected __SVN_ROOT_NODE and actual __SVN_ROOT_NODE are different!
=============================================================
EXPECTED NODE TO BE:
=============================================================
 * Node name:   __SVN_ROOT_NODE
    Path:       __SVN_ROOT_NODE
    Contents:   None
    Properties: {}
    Attributes: {}
    Children:   1
=============================================================
ACTUAL NODE FOUND:
=============================================================
 * Node name:   __SVN_ROOT_NODE
    Path:       __SVN_ROOT_NODE
    Contents:   None
    Properties: {}
    Attributes: {}
    Children: is a file.
Unequal Types: one Node is a file, the other is a directory
EXCEPTION: SVNTreeUnequal
FAIL:  merge_tests.py 32: merge an added dir on a deleted dir in target


-- 
Martin

Subcommander, http://subcommander.tigris.org
a cross platform Win32/Unix/MacOSX subversion gui client & diff/merge tool.

Echte DSL-Flatrate dauerhaft für 0,- Euro*!
"Feel free" mit GMX DSL! http://www.gmx.net/de/go/dsl

Re: merge problem, svn: Directory 'xxx' is missing [Issue 2515]

Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On 6/8/06, Martin Hauner <Ma...@gmx.net> wrote:

> The error is created in svn_wc_adm_retrieve. The interesting code seems to be
> the add_directory in libsvn_client/repos_diff.c.
>
> If anyone could outline a fix, I could try to create a patch.

Perhaps making sure get_path_access is passed TRUE for it's leneint
parameter, and then gracefully handling the case where you can't get
that access baton would be enough?  I imagine you'd want to end up
with action = skipped in those kind of cases, although I'm not
positive.

A good first step would be writing a test case for the test suite though.

-garrett

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org