在接收后自动同步Trac和git(在Windows上使用Bitnami)

Automatically sync Trac and git on post-receive (using Bitnami on windows)

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

现在我要做的是在存储库的post-receive挂钩中调用此行,但是我正在努力从bat文件中调用此行。

有人知道我该怎么做吗?

编辑:
到目前为止,我的接收后已经有了这个

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

调用我手动编写的bat文件可以正常工作,但这不是调用。我想知道是否是因为挂钩没有正确设置以赢得胜利?

这是该文件的内容:

1
2
3
4
5
@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" ...

在调用时会发生以下情况:

1
2
3
4
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

一方面,对于Windows系统,路径名中的斜杠是向后的。但是,这可能不足以使脚本脱轨。

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

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

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

您确定提交后的钩子完全在运行吗?尝试在挂接脚本的顶部添加一个命令,例如" echo [%TIME%]运行>> C:\\\\\\\\ test.txt \\的挂接脚本,并验证是否确实记录了某些内容。如果没有,那么git可能根本看不到您的钩子脚本。