【发布时间】: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