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

post commit script and svnlook (log and changed are empty)

From: Tim Diggins <tim_at_red56.co.uk>
Date: 2004-07-07 10:08:32 CEST

Hi -

I've made a very simple script which mails me info about each commit to a
SVN repository.
it uses "svnlook changed -r N path", "svnlook log -r N path" and "svnlook
author -r N path" to compose the message

When I run it from the command line it works fine - but when I add it to my
postcommit hook, the changed and log entries are empty (author is fine, and
correct). I've tried adding some sleep (time.sleep(2) in a loop) but still
no dice - after waiting 20s there's still nothing in the svnlook changed.

So I've probably missed something... But can't work out what it is (as I'm
using svn+ssh, I don't think it can be a permissions thing).

Thanks

Tim

BTW, before someone asks - I haven't used any of the existing
tools/hook-scripts as I haven't yet managed to install svn module into
python and I can't get the perl script to work (maybe because I did an
export from the HEAD of svn of subversion, cause wasn't in my default
(darwinports) install), and I've got such a small developer base (2) and
such limited needs, I thought it might -- might-- be quicker to just hack
out a quick script... now I'm just "hooked".

------------------------------------------------------
fyi - more details:
------------------------------------------------------
svn running on: osx 10.3 panther
client running on: windows xp (tortoisesvn)
script written in python (2.3)...

------------------------------------------------------
Python excerpt:
------------------------------------------------------
def svnlook(what, rev, repos):
    f=os.popen("""svnlook %s -r %s %s""" % (what, rev,repos), "r")
    val = "".join(f.readlines())
    f.close()
    return val

for i in range(10):
    changed = svnlook("changed", rev, repos)
    if changed:
        break
    time.sleep(2)
if not changed:
    errors.append("No value for changed")

log = svnlook("log", rev, repos).strip()
author = svnlook("author", rev,repos).strip()

f=os.popen("""mail -s "SVN: %s (r%s: %s)" %s""" %(log, rev, author,
mails),"w"
)
f.write("%-20s %s\n" % ("repos:", repos))
f.write("%-20s %s\n" %("revision:", rev))
f.write("%-20s %s\n" % ("log message:",log))
f.write("changes:\n" )
f.write(changed)
f.write("\n\n")
if errors:
    f.write("errors:\n")
    f.write("\n".join(errors))
    f.write("\n")
f.close()
------------------------------------------------------
  Tim Diggins
  http://www.red56.co.uk/people/tim

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Wed Jul 7 16:29:09 2004

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