Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 提交后钩子未执行 问题_Svn_Svn Hooks_Post Commit Hook - Fatal编程技术网

Svn 提交后钩子未执行 问题

Svn 提交后钩子未执行 问题,svn,svn-hooks,post-commit-hook,Svn,Svn Hooks,Post Commit Hook,我正在使用SVN进行修订控制。 我想使用post-commit钩子来执行脚本,但由于某些原因它不会触发 你知道原因是什么吗 补充资料 我的服务器是一台Windows server 2012 我使用的是VisualSVN服务器2.7.4 我已将hooks文件夹中的post-commit.tmpl文件更改为post-commit.bat 我正在使用http协议来访问服务器 到目前为止我试过什么 我修改了post commit.bat文件,在c:\中创建了一个空文件,用于验证钩子是否已执行(它

我正在使用
SVN
进行修订控制。
我想使用
post-commit
钩子来执行脚本,但由于某些原因它不会触发

你知道原因是什么吗


补充资料
  • 我的服务器是一台
    Windows server 2012
  • 我使用的是
    VisualSVN服务器2.7.4
  • 我已将
    hooks
    文件夹中的
    post-commit.tmpl
    文件更改为
    post-commit.bat
  • 我正在使用
    http
    协议来访问服务器
到目前为止我试过什么
  • 我修改了
    post commit.bat
    文件,在
    c:\
    中创建了一个空文件,用于验证钩子是否已执行(它没有…)
  • 该脚本可以在命令行中完美地工作
  • 我将协议更改为
    文件://
    (并共享了repo的文件夹)-不好

解决方案
正如@bahrep和@dialuticus所指出的,在根c:上创建测试文件对我来说是不明智的。在对所有人都具有完全权限的子文件夹中创建文件后,文件被创建,例如,钩子毕竟被触发。

尝试在C:\Temp文件夹中创建空文件。写入C:的根目录需要您可能拥有的特权,但运行SVN server的帐户可能没有

另外,尝试另一个测试,以防万一。使
pre-revprop change.bat
hook只包含一行代码“exit 0”,并尝试更改某个修订版的日志消息,甚至更改作者,看看是否有效

  • 正如@JyotsnaSaroha已经提到的,Subversion钩子是在运行VisualSVN服务器服务的帐户下执行的。默认情况下,该服务在
    网络服务
    帐户下运行,因此该帐户必须对您需要使用的目录/文件具有访问权限

  • 您不需要编辑/重命名
    *.tmpl
    钩子文件,只需在VisualSVN服务器管理器控制台中使用VisualSVN服务器的内置钩子编辑器即可

  • 我强烈反对使用post-commit钩子在
    C:\
    中创建任何内容。使用其他目录,例如
    C:\myhookdirectory


  • 对我来说,这看起来像是钩子文件夹上的权限问题。Subversion以拥有访问Subversion存储库的进程的同一用户的身份执行钩子。请检查这是否到位?它具有
    Modify
    权限…感谢您的回复
    1
    :忘了提到这一点,我确实检查了它,并且该服务具有
    Modify
    权限<代码>2:当通过VisualSvn查看时,它会显示修改,因此我猜是相同的<代码>3这只是为了调试…更新:再次测试后,在c:\中有一个子文件夹,似乎你有他们的观点。正在创建文件,因此正在触发挂钩。我希望我能把两个答案都标为“已接受”,但我不能,所以我会选择第一个答案……马上。在子文件夹中设置要创建的文件(对每个人都具有完全权限)后,文件被创建,这意味着钩子被触发。谢谢