1

所以我在 Windows 上的 Bitnami trac 堆栈上安装了 trac 和 trac-git 插件。一切正常,但是每当我提交我的 git repo 时,我必须打开use_trac.bat然后调用,然后trac-admin ProjectName repository resync才能看到 trac 中的更改。

现在我想做的是post-receive在存储库的钩子中调用这一行,但我正在努力解决如何从 bat 文件中调用它。

有人知道我该怎么做吗?

编辑:到目前为止,我在接收后有这个

echo "Resync repo"
"C:/path/to/repos/resync_git.bat"

调用我手动编写的这个 bat 文件可以工作,但这不是调用。我想知道是不是因为钩子的设置不适合获胜?

这是该文件的内容:

@echo off
CALL "C:\PROGRA~1\Trac\scripts\setenv.bat"
cd "C:\Program Files\Trac"
START "BitNami Trac Stack Environment" cmd
trac-admin C:/path/to/project changeset added "prjname"

trac-admin C:/path/to/project repository resync "prjname"以后可能会在这里使用...

这就是调用时发生的情况:

remote: Resync repo
remote: ./resync_git.bat: line 1: @echo: command not found
remote: ./resync_git.bat: line 2: CALL: command not found
remote: ./resync_git.bat: line 5: trac-admin: command not found
4

1 回答 1

1

一方面,对于 Windows 系统,路径名中的斜杠是向后的。不过,这可能还不足以破坏剧本。

当我遇到钩子脚本失败但在手动运行时工作的问题时,它通常归结为以下两件事之一:脚本在执行时视为“当前工作目录”,以及在其下的用户帐户脚本运行。您可以通过在脚本中使用绝对路径或通过显式更改为特定目录作为脚本的第一行来解决第一个问题。第二个问题可能有点棘手。有时它是由权限问题引起的,有时是由作为具有不同 PATH 的用户运行的脚本引起的。

无论哪种方式,您都需要更多调试信息才能准确了解这里发生了什么。在启动脚本的命令中,将 stdout 和 stderr 重定向到日志文件,以便您可以捕获任何相关输出。将结果添加到您的问题中,我应该能够给您更具体的答案。

另一个值得尝试的可能性是消除额外的 .bat 文件,只需将 'trac-admin' 调用直接放入挂钩脚本中。

你确定你的 post-commit 钩子正在运行吗?尝试将“echo [%TIME%] Hook script running >>C:\test.txt”之类的命令添加到 hook 脚本的顶部,并验证是否确实记录了某些内容。如果没有,那么 git 可能根本看不到你的钩子脚本。

于 2012-06-18T12:31:25.923 回答