"Edward Diener" <ediener@loyaltyworks.com> writes:
> > The documentation for the swig bindings is largely found in the
> > subversion/include directory -- we're just exposing the C API,
> > generally speaking.
>
> To say that there is documentation in the subversion/include
> directory is a misnomer. I do see the subversion API documentation,
> but this does not tell me the equivalent Python constructs to their
> C++ counterparts. I am a C++ programmer also but trying to figure
> out what Python expects as opposed to C++ is a major headache. SWIG
> is very clever but impossible to understand.
In most cases, there are no equivalents. The funky types that
Subversion uses (like svn_fs_root_t, svn_repos_t, svn_fs_t, etc.) are
generally only meant for consumption by Subversion itself. SWIG turns
the C objects into Python objects, and you hand those (basically
opaque) object back to the API.
So, writing to the SWIG bindings is very much like writing to the
Subversion C API:
#!/usr/bin/python
from svn import core, repos, fs
def handle_dir(fs_root, path, id, pool):
print "%s/ [%s]" % (path, id)
dirents = fs.dir_entries(fs_root, path, pool)
subpool = core.svn_pool_create(pool)
for name in dirents.keys():
core.svn_pool_clear(subpool)
fullpath = path + '/' + name
id = fs.unparse_id(dirents[name].id, subpool)
is_dir = fs.is_dir(fs_root, fullpath, subpool)
if is_dir:
handle_dir(fs_root, fullpath, id, subpool)
else:
print "%s [%s]" % (fullpath, id)
core.svn_pool_destroy(subpool)
core.apr_initialize()
pool = core.svn_pool_create(None)
repos_ptr = repos.svn_repos_open('/usr/local/svn/subversion', pool)
fs_ptr = repos.svn_repos_fs(repos_ptr)
fs_root = fs.revision_root(fs_ptr, 1000, pool)
id = fs.unparse_id(fs.node_id(fs_root, 'trunk', pool), pool)
handle_dir(fs_root, 'trunk', id, pool)
core.apr_destroy()
And there are plenty of other examples of the bindings usage in the
Subversion tree and ViewCVS projects.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Thu Aug 19 22:43:47 2004