subversion-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tino Schwarze <subversion.li...@tisc.de>
Subject Re: Question regarding the python binding
Date Thu, 25 Mar 2010 14:32:35 GMT
Additional question: I can't seem to find an equivalent of "svnlook cat"
anywhere... I wanted to avoid calling external programs - commits are
slow enough already...

Thanks,

Tino.

On Thu, Mar 25, 2010 at 03:17:42PM +0100, Tino Schwarze wrote:
> Hi there,
> 
> I'm currently implementing commit hooks and struggling with the python
> bindings. I took the contributed pre-commit example which uses the "svn"
> python module which maps more or less directly to libsvn functions.
> 
> Background: We want to enforce certain global ignores, MIME types etc.
> The most coherent way should be to just read our default .svn/config
> file and verify against it's settings. BTW: Has anybody done something
> similar already?
> 
> Back to python: I managed to use the Python bindings to get a value from
> the config file (I didn't want to reinvent the wheel) like this:
> 
> ***
> from svn import repos, fs, delta, core, client
> 
> def main(pool, repos_dir):
> 
>     # for now, store client configuration in repository root
>     cfgfile = repos_dir+'/conf/client.conf'
> 
>     svncfg = core.svn_config_read (cfgfile, True, pool)
> 
>     global_ignores = core.svn_config_get (svncfg, core.SVN_CONFIG_SECTION_GLOBAL, core.SVN_CONFIG_OPTION_GLOBAL_IGNORES,
None)
> 
> ***
> 
> Now I'd like to verify our default set of required MIME types, so I need
> to get the contents of the [auto-props] section from the config file.
> 
> libsvn provides the following function which should be suitable for my
> needs:
> 
> svn_config_enumerate2(svn_config_t cfg, char section,
> svn_config_enumerator2_t callback, void baton, apr_pool_t pool) -> int
> 
> Two questions arise:
> 
> 1. How do I define an appropiate callback in Python? Looking at the SWIG
> documentation, I see examples on how to implement Python callbacks but
> they don't seem to match the current SVN bindings. I tried passing a
> Python method, deriving from svn_config_enumerator2_t etc. -> Segfault.
> 
> 2. What's the baton good for? Is it just some kind of additional data, I
> don't need to care about?
> 
> Maybe the devel list is more appropiate for such questions, but I wanted
> to try here first.
> 
> Thanks,
> 
> Tino.
> 
> -- 
> "What we nourish flourishes." - "Was wir nähren erblüht."
> 
> www.lichtkreis-chemnitz.de
> www.tisc.de

-- 
"What we nourish flourishes." - "Was wir nähren erblüht."

www.lichtkreis-chemnitz.de
www.tisc.de

Mime
View raw message