git-as-svn / git-as-svn

Subversion frontend server for Git repositories

Home Page:https://git-as-svn.github.io/git-as-svn/htmlsingle/git-as-svn.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hooks don't execute on Windows: "%1 is not a valid win32 application"

Sebazzz opened this issue · comments

On Windows I'm running into the issue of hooks not properly executing.

2019-11-06T10:36:04,992 ERROR [git] [SvnServer-thread-16] (GitPushEmbedded.java:146) - Hook failed: D:\Gitea\data\repositories\adm-sebastiaan\toxic-translation-test.git\hooks\pre-receive
java.io.IOException: Cannot run program "D:\Gitea\data\repositories\adm-sebastiaan\toxic-translation-test.git\hooks\pre-receive" (in directory "D:\Gitea\data\repositories\adm-sebastiaan\toxic-translation-test.git"): CreateProcess error=193, %1 is not a valid Win32 application
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1128) ~[?:?]
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1071) ~[?:?]
        at svnserver.repository.git.push.GitPushEmbedded.lambda$runReceiveHook$0(GitPushEmbedded.java:82) ~[git-as-svn.jar:?]
        at svnserver.repository.git.push.GitPushEmbedded.runHook(GitPushEmbedded.java:131) ~[git-as-svn.jar:?]
        at svnserver.repository.git.push.GitPushEmbedded.runReceiveHook(GitPushEmbedded.java:81) ~[git-as-svn.jar:?]
        at svnserver.repository.git.push.GitPushEmbedded.push(GitPushEmbedded.java:63) ~[git-as-svn.jar:?]
        at svnserver.repository.git.GitWriter$GitCommitBuilder.commit(GitWriter.java:230) ~[git-as-svn.jar:?]
        at svnserver.server.command.CommitCmd$EditorPipeline.lambda$closeEdit$7(CommitCmd.java:521) ~[git-as-svn.jar:?]
        at svnserver.repository.git.GitRepository.wrapLock(GitRepository.java:131) ~[git-as-svn.jar:?]
        at svnserver.repository.git.GitRepository.wrapLockWrite(GitRepository.java:122) ~[git-as-svn.jar:?]
        at svnserver.server.command.CommitCmd$EditorPipeline.closeEdit(CommitCmd.java:515) ~[git-as-svn.jar:?]
        at svnserver.server.command.LambdaCmd.process(LambdaCmd.java:40) ~[git-as-svn.jar:?]
        at svnserver.server.command.CommitCmd$EditorPipeline.editorCommand(CommitCmd.java:639) ~[git-as-svn.jar:?]
        at svnserver.server.SvnServer.serveClient(SvnServer.java:230) ~[git-as-svn.jar:?]
        at svnserver.server.SvnServer.lambda$run$1(SvnServer.java:197) ~[git-as-svn.jar:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
        at java.lang.Thread.run(Thread.java:830) [?:?]
Caused by: java.io.IOException: CreateProcess error=193, %1 is not a valid Win32 application
        at java.lang.ProcessImpl.create(Native Method) ~[?:?]
        at java.lang.ProcessImpl.<init>(ProcessImpl.java:483) ~[?:?]
        at java.lang.ProcessImpl.start(ProcessImpl.java:158) ~[?:?]
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1107) ~[?:?]
        ... 17 more

Running on:

  • Windows Server 2016
  • jdk 13.0.1

Configured with:

  • gitea - but the repositories are manually mapped using !listmapping because I only need two

Gitea installs some hooks to update its internal metadata. These hooks are bash scripts which are executed in the git-installed Cygwin distribution (bash in cygwin). I believe that is also the solution for this: git hooks are to be executed in a cygwin environment.

Please, try setting pusher: !pushNative {} inside repository: section as a workaround. It expects that git.exe is available on %PATH%.

That works fine. Apologies, I must have overlooked it in the documentation.

It's not documented :)