将 SVN Python 挂钩包装在 Windows 批处理文件中

发布于 2024-10-17 18:47:30 字数 441 浏览 6 评论 0原文

我有一个 SVN 预提交挂钩,之前驻留在 Linux 服务器上。我现在正尝试将内容转移到 Windows (Server 2003) 服务器。

这个钩子是用 Python 编写的,它在 Linux 上运行良好,其 #!/usr/bin/env python 行位于顶部。然而,Windows 却不是这样工作的,它要求钩子是批处理文件(或其他格式,但仍然不是 Python)。

重要的是,参数被传递给脚本,退出代码被返回给调用进程(SVN 服务器),以便它知道是否允许提交。我对 .bat 文件语法几乎一无所知,但我认为这样的东西可以解决问题:

C:\Python26\python.exe pre-commit.py %1 %2

我认为这是包装 Python 脚本的最简单方法是对的吗?它会自动返回脚本的退出代码吗?

I have an SVN pre-commit hook that previously resided on a Linux server. I'm now trying to move things over to a Windows (Server 2003) server.

This hook was written in Python, which worked fine on Linux with its #!/usr/bin/env python line at the top. Windows, however, doesn't work that way and requires hooks to be batch files (or other formats, but still not Python).

The important thing is that the arguments get passed to the script and the exit code gets returned to the calling process (the SVN server), so that it knows whether or not to allow the commit. I know next to nothing about .bat file syntax, but I thought that something like this would do the trick:

C:\Python26\python.exe pre-commit.py %1 %2

Am I right in thinking that this is the simplest way to wrap the Python script? Will it automatically return the exit code of the script?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

放飞的风筝 2024-10-24 18:47:30

回答我自己的问题:这几乎有效。退出代码是通过 ERRORLEVEL 变量检测的,但由于环境为空,因此必须完整指定脚本的路径。值得庆幸的是,第一个参数包含存储库的位置,所以它只是:

C:\Python26\python.exe %1\hooks\pre-commit.py %1 %2

To answer my own question: this almost works. The exit code is detected through the ERRORLEVEL variable, but due to the empty environment, the path to the script must be fully specified. Thankfully the first argument contains the location of the repository, so it's just:

C:\Python26\python.exe %1\hooks\pre-commit.py %1 %2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文