You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Dale Hirt <da...@sbcltd.com> on 2005/06/17 19:03:41 UTC

python and ctx.log_msg_func

Hi all,

I am having trouble with committing and setting up log messages with the Python bindings.  So far, I've been cheating and writing to a file, then calling the command-line svn with a file arg.  However, now that I'm setting up via the client API, it seems to be having some major issues.

I have attached test code to show you what I'm doing, and the error that I'm getting.  It errors out on commit_tmpl.commit() when I am attempting to assign a log_msg_func.  Any and all help is appreciated.

Dale


Error Message
------------------
Traceback (most recent call last):
  File "testCommit.py", line 44, in ?
    core.run_app(main)
  File "c:\python23\lib\site-packages\svn\core.py", line 33, in run_app
    return apply(func, (pool,) + args, kw)
  File "testCommit.py", line 40, in main
    pc.commit([base_path])
  File "testCommit.py", line 28, in commit
    self.__ctx.log_msg_func = self._commit_msg_func
  File "c:\python23\lib\site-packages\libsvn\client.py", line 134, in <lambda>
    __setattr__ = lambda self, name, value: _swig_setattr(self, svn_client_ctx_t
, name, value)
  File "c:\python23\lib\site-packages\libsvn\client.py", line 13, in _swig_setat
tr
    if method: return method(self,value)
TypeError: Type error. Expected _svn_client_get_commit_log_t

testCommit.py
--------------
import os
import sys

from svn import core, client

def create_client_ctx(pool):
	ctx = client.svn_client_ctx_t()
	providers = []
	providers.append(client.svn_client_get_simple_provider(pool))
	providers.append(client.svn_client_get_username_provider(pool))
	providers.append(client.svn_client_get_ssl_server_trust_file_provider(pool))
	providers.append(client.svn_client_get_ssl_client_cert_file_provider(pool))
	providers.append(client.svn_client_get_ssl_client_cert_pw_file_provider(pool))
	ctx.auth_baton = core.svn_auth_open(providers, pool)
	ctx.config = core.svn_config_get_config(None, pool)
	return ctx

class commit_tmpl:
	def __init__(self, ctx, pool):
		self.__ctx = ctx
		self.__pl = pool
	
	def _commit_msg_func(self, log_msg, tmp_file, commit_items, baton, pool):
		log_msg = ""
		return (log_msg, None)
	
	def commit(self, paths, recurse=True, keep_locks=False):
		self.__ctx.log_msg_func = self._commit_msg_func
		client.commit2(paths, recurse, keep_locks,
						self.__ctx, self.__pl)

def main(pool):
	base_path = "."
	
	ctx = create_client_ctx(pool)
	
	client.svn_client_mkdir(["test"], ctx, pool)
		
	pc = commit_tmpl(ctx, pool)
	pc.commit([base_path])


if __name__ == "__main__":
	core.run_app(main)

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