Search code examples
pythonsvnpysvn

Subversion Hook Script WIndows, Python, pysvn


I'm trying to create a hook script for subversion on windows, I have a bat file that calls my python script but getting the log/comments seems to be beyond me.

I have pysvn installed and can get the transaction like this:

 repos_path = sys.argv[1]
 transaction_name = sys.argv[2]
 transaction = pysvn.Transaction( repos_path, transaction_name)

I can also list what has changed:

transaction.changed(0)

What I cannot figure out is how to get the log/comment for the transaction. I realize that in pysvn there is a command similar to:

transaction.propget(propname,path)

But cannot for the life of me get it to return anything. I assume propname should be "svn:log", for path I have tried the fiel name, the repo path, null but all get are errors.

AT the end of the day I need to validate the comment, there will be matching against external data that will evolve, hence why I want to do it in python rather than the bat file, plus it may move to a linux server later.

AM I missing something obvious? How do I get the log/comment as a string?

Thanks, Chris.


Solution

  • After a great deal of trial and error and better searching after a day of frustration I found that I need to use the revision property, not a straight property, for a given transaction this will return the user submitted comment:

    transaction.revpropget("svn:log")
    

    There are other useful properties, this will return a list of all revision properties:

    transaction.revproplist()
    

    for example:

    {'svn:log': 'qqqqqqq', 'svn:txn-client-compat-version': '1.9.7', 'svn:txn-user-agent': 'SVN/1.9.7 (x64-microsoft-windows) TortoiseSVN-1.9.7.27907', 'svn:author': 'harry', 'svn:date': '2017-12-14T16:13:52.361605Z'}