【问题标题】:Post-commit hook not executing提交后挂钩未执行
【发布时间】:2014-05-13 08:31:27
【问题描述】:

问题

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

任何想法可能是什么原因?


其他信息

  • 我的服务器是Windows Server 2012
  • 我正在使用VisualSVN Server 2.7.4
  • 我已将hooks文件夹中的post-commit.tmpl文件更改为post-commit.bat
  • 我使用http 协议来访问服务器。

到目前为止我尝试了什么

  • 我修改了post-commit.bat 文件,在c:\ 中创建了一个空文件,用于验证钩子是否已执行(它没有...)
  • 脚本在命令行中完美运行。
  • 我将协议更改为 file://(并共享了 repo 的文件夹)- 不好...

解决方案

正如@bahrep 和@Dialectus 指出的那样,在根c: 上创建测试文件对我来说并不明智。在对每个人都具有完全权限的子文件夹中创建它之后,该文件被创建,例如毕竟钩子被触发了。

【问题讨论】:

  • 对我来说,这看起来像是钩子文件夹的权限问题。 Subversion 以拥有访问 Subversion 存储库的进程的同一用户身份执行挂钩请检查这是否到位?
  • 拥有Modify 权限...

标签: svn svn-hooks post-commit-hook


【解决方案1】:

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

另外,请尝试另一个测试,以防万一。用一行代码“exit 0”使pre-revprop-change.bat挂钩,并尝试更改某些修订的日志消息,甚至作者,看看是否可行。

【讨论】:

  • 就在现场。在设置要在子文件夹中创建的文件后(每个人都具有完全权限),文件被创建,这意味着钩子被触发。谢谢!
【解决方案2】:
  1. 正如@JyotsnaSaroha 已经提到的,Subversion 挂钩在运行 VisualSVN Server 服务的帐户下执行。该服务默认运行在Network Service账户下,因此该账户必须具有访问您需要它操作的目录/文件的权限。

  2. 您无需编辑/重命名*.tmpl挂钩文件,只需在VisualSVN Server Manager控制台中使用VisualSVN Server内置的挂钩编辑器即可。

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

【讨论】:

  • 感谢您的回复。 1:忘了提,我确实检查过,服务有Modify 权限。 2:通过VisualSvn查看时,显示修改,所以我猜是一样的......3只是为了调试......
  • 更新:再次测试后,在 c:\ 中有一个子文件夹,您似乎对他们有所了解。正在创建文件,因此正在触发挂钩。希望我可以将两个答案都标记为accepted,但我不能,所以我会选择第一个......
猜你喜欢
  • 1970-01-01
  • 2011-07-02
  • 2021-09-10
  • 2014-08-10
  • 2018-09-29
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多