subversion-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ryan Schmidt <>
Subject Re: Post svn hook
Date Sat, 17 May 2014 00:12:18 GMT

On May 15, 2014, at 17:51, Havlovick, Ron wrote:

> I am a newbie and I am more than a bit confused.
> Perhaps ya'll could tell me something. (Other than to …..)
> I am on Windows using tortoise svn.
> Here's what I want to do, and I am trying to figure out exactly how to do it.
> Please bear with me:
> When I commit a file into the repository, I want the entire repository directory(folder)
to be checked out to a "golden directory(folder)".
>         I do not care if it over writes any existing file in that golden directory(folder).
> Create an empty text file in the golden directory(folder).
> In the empty text file write to it the revision number of the repository directory(folder)
and the date of the last commit (basically the date stamp of the repository directory(folder).
> I can write a perl script to basically copy files from one directory to another (golden).
> read the data stamp of the directory(folder).  ctime(stat($directory….)->my_time)
> What has got me baffled is:
> How to get the revision number of the repository directory(folder). (Is this just a regular
folder on the server and I just have the path \\server\directory  wrong)
> How to get the date stamp of that repository directory(folder).  (This could be if I
have the path wrong then I am trying to read statistics on nothing.)
> Assuming I have the perl script correct, where do I put the perl script in what post_hook
or post_commit?
> Do I call the perl script within the post_commit {  function or what…
> And where do I put the combined perl script post_hook script? (In the svn directory on
my PC or on the server)
> When I run the perl script on a local directory via the command prompt, everything works.
(But I am not pointing to the repository, just a local c:\folder.)

Look in the repository directory on the server. You should see among other things a "hooks"
directory, containing sample scripts for each of the events for which Subversion can call
hook scripts. These sample scripts have names ending in ".tmpl". They're written in Bash,
which is for UNIX systems and won't usually work on Windows; for Windows, you'd need to write
a batch script or a compiled executable. You'd place this script in the hooks directory, named
the same as the relevant sample script, except without the ".tmpl" extension and with an extension
appropriate for the type of file (e.g. "post-commit.bat" for a batch script, "post-commit.exe"
for a compiled executable). Some other extensions are recognized by Subversion server on Windows
as well, although I don't believe .pl is one of them, so you should probably write a small
batch script or exe that runs your perl script.

The comments in the sample scripts tell you what arguments Subversion server supplies to the
hook script when it runs it. For example, the post-commit script is given the repository path
on disk as the first argument and the just-committed revision number as the second argument.
So in Bash on UNIX, the repository path would be available as "$1" and the revision as "$2";
I don't know how that works in Windows batch files but there's probably a similar way to do
that. So in Bash on UNIX, I could use that information to get the date of the commit by running
"svnlook date $1 -r $2".

View raw message