Lieven Govaerts wrote:
> Andy Levy wrote:
> > Attached is a WSF script which iterates through all unnamed arguments
> > passed in and appends them to a textfile c:\hook.txt. It then iterates
> > through named arguments and does the same. It's not particularly
> > "clean" or elegant, but it gets the job done.
> I tried your script, but can't get it to run as a hook. I've made a few
> changes to the code to see if those fix the problem: translating the
> path to local style and changing some of the options used to create the
> process, but none of those changes fixed anything.
> I can only conclude that with the current code svn can only trigger hook
> scripts in formats supported by the shell, but none that need an
> external interpreter (cscript, python, perl), even if PATHEXT/ftype is
If you try the following patch (just a quick hack to test),
it should run the hook script. I'm not sure if .wsf needs to be
in PATHEXT, but I would expect so (it is in mine).
The hook fails, but that is expected as the exit code is 1.
C:\junk>svn ci -m "wsf test using the shell"
Transmitting file data .svn: Commit failed (details follow):
svn: MERGE request failed on '/repos/junk/trunk'
svn: 'pre-commit' hook failed with error output:
Looking into apr, it tries to execute the program directly unless it ends
in .cmd or .bat when using APR_PROGRAM(_PATH).
--- subversion/libsvn_subr/io.c (revision 23008)
+++ subversion/libsvn_subr/io.c (working copy)
@@ -1995,16 +1995,28 @@
const char **args_native;
const char *cmd_apr;
+ int i;
/* Create the process attributes. */
apr_err = apr_procattr_create(&cmdproc_attr, pool);
(apr_err, _("Can't create process '%s' attributes"), cmd);
- /* Make sure we invoke cmd directly, not through a shell. */
- apr_err = apr_procattr_cmdtype_set(cmdproc_attr,
+ i = strlen(cmd);
+ if (i >= 4 && strcasecmp(cmd + i - 4, ".wsf") == 0)
+ /* Invoke cmd through the shell. */
+ apr_err = apr_procattr_cmdtype_set(cmdproc_attr, APR_SHELLCMD);
+ /* Make sure we invoke cmd directly, not through a shell. */
+ apr_err = apr_procattr_cmdtype_set(cmdproc_attr,
return svn_error_wrap_apr(apr_err, _("Can't set process '%s'
Hope this helps.
Now you can scan emails quickly with a reading pane. Get the new Yahoo! Mail. http://uk.docs.yahoo.com/nowyoucan.html
To unsubscribe, e-mail: email@example.com
For additional commands, e-mail: firstname.lastname@example.org
Received on Sat Jan 20 02:55:55 2007