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

Re: svn:externals parser API

From: Daniel Shahaf <danielsh_at_elego.de>
Date: Wed, 22 Feb 2012 11:31:00 +0200

Stefan Sperling wrote on Wed, Feb 22, 2012 at 00:08:35 +0100:
> On Tue, Feb 21, 2012 at 11:50:54PM +0100, Stefan Sperling wrote:
> > I think svn_wc_parse_externals_description3() should do what you need.
> > Does this help you?
> >
> > The function is mapped in the python bindings:
> >
> > >>> import svn.wc
> > >>> svn.wc.svn_wc_parse_externals_description3
> > <function svn_wc_parse_externals_description3 at 0x20779a758>
>
> Hmmm... my suggestion probably won't work.
> The function doesn't seem to be usable.
>
> >>> svn.wc.svn_wc_parse_externals_description3("/tmp", "^/branch/gamma foo", 0)
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "/usr/local/lib/python2.7/site-packages/libsvn/wc.py", line 398, in svn_w
> c_parse_externals_description3
> return apply(_wc.svn_wc_parse_externals_description3, args)
> ValueError: svn_wc_parse_externals_description3 is not implemented yet
>
>
> But the 1.4 version of this function is working:
>
> >>> e = svn.wc.svn_wc_parse_externals_description("/tmp", "^/branch/gamma foo")
> >>> e
> {'foo': <libsvn.wc.svn_wc_external_item_t; proxy of <Swig Object of type 'svn_wc
> _external_item_t *' at 0x2083e50c0> >}
> >>> e['foo']
> <libsvn.wc.svn_wc_external_item_t; proxy of <Swig Object of type 'svn_wc_externa
> l_item_t *' at 0x2083e50c0> >
> >>> e['foo'].target_dir
> 'foo'
> >>> e['foo'].url
> '^/branch/gamma'
> >>> e['foo'].revision
> <libsvn.core.svn_opt_revision_t; proxy of <Swig Object of type 'svn_opt_revision_t *' at 0x2043d90d0> >
>
>
> But that doesn't provide you with the enhancements of the 1.5 syntax,
> e.g. peg-revision support.
>
> I am not a bindings expert so I don't know what we'd need to do to make
> the newer variants of this function work from the bindings.

Based the difference between the signatures of the
svn_wc_parse_externals_description() and
svn_wc_parse_externals_description2(), I would suspect that someone
needs to provide a Python implementation of the following typemap:

    #ifdef SWIGRUBY
    %typemap(argout) apr_array_header_t **externals_p {
      %append_output(svn_swig_rb_apr_array_to_array_external_item2(*$1));
    }
    #endif

Daniel
(not a swig expert, either)
Received on 2012-02-22 10:31:45 CET

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