【问题标题】:svn post-commit hook on windows serverWindows服务器上的svn post-commit钩子
【发布时间】:2014-04-29 22:52:48
【问题描述】:

我正在尝试在 Windows 服务器上设置 svn 提交后挂钩,以便每次提交时,它都会连接到我的错误跟踪网站上现有项目的问题。

由于没有预先为 Windows 制作的 post-commit 钩子(或者至少我还没有找到适合我需要的钩子),所以我尝试为自己编写批处理文件。

SET REPOS=%1
SET REV=%2
SET SVNLOOK="C:\Program Files (x86)\VisualSVN Server\bin\svnlook.exe"
SET PROJECT=3

%SVNLOOK% log -r %REV% "%REPOS%" > COMMIT_MSG
SET /p COMMIT_MSG= < COMMIT_MSG
echo %COMMIT_MSG%

C:\curl\bin\curl "http://www.mybugtrackingsite.de/vcs_integration/report/%PROJECT%/?passkey=KEY" --data-urlencode "msg=%COMMIT_MSG%"

当我自己设置 REPOS 和 REV 并从命令行运行脚本时它可以工作,但是当我进行提交时它不起作用并且我的 COMMIT_MSG 只包含“echo is on”而不是实际消息.

我已经读到,svn 存储库在一个空环境下执行钩子程序,这意味着根本没有设置环境变量,这可能是我的脚本手动运行良好而不是由 svn 运行时运行良好的原因。

但是我必须设置哪些变量以及如何设置?我的路径已经是绝对的,所以这不应该是问题。我不是 Windows 人,也不是真正的批处理 - 所以任何帮助或想法如何让这个东西工作将不胜感激!

【问题讨论】:

  • 您将 REPOS 和 REV 设置为相同的东西:第一个参数。这实际上是存储库路径。这只是一个错字还是您的脚本实际上是这样做的?我敢打赌,这会导致一些问题。您需要在设置两个变量之间使用%2 或运行shift。
  • 你可以先叫它batch 而不是bash(这是*nix)。
  • 是的,这实际上只是一个错字。在我的脚本中它说 %1 和 %2,在问题中修复了它,对此感到抱歉

标签: windows svn batch-file post-commit svn-hooks


【解决方案1】:

当您将提交消息重定向到使用相对路径“COMMIT_MESSAGE”的文件时。

%SVNLOOK% log -r %REV% "%REPOS%" &gt; COMMIT_MSG

svn hook 使用的工作目录可能与你的不同,svn 进程无权在该位置写入。您可以使用绝对路径。

你也可以尝试重定向 STDERR 看看你是否从 svnlook 收到错误。

还要删除挂钩脚本开头的文件,以确保您不使用之前运行的文件。

【讨论】:

  • 非常感谢!使文件的路径绝对做到了,现在一切正常
【解决方案2】:

您将REPOS 和REV 都设置为%1。其中之一应该是%2

您还应该将@ECHO OFF 放在文件顶部以避免屏幕上出现不必要的输出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2013-01-06
    • 2012-02-04
    • 2010-09-07
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多