linux - 从 Windows 到 Linux 的 SVN 预提交 Hook

标签 linux windows svn pre-commit-hook

我的网络中有两台电脑: 1) CentOs 2) Windows 7

我在 Linux 机器上创建了存储库并添加了一些预提交 Hook 脚本。然后,我将文件 check out 到两台计算机上的工作副本目录中。现在,当我进行一些更改并从 Linux 工作副本提交它们时,预提交 Hook 将按其应有的方式工作。但是,当我从 Windows 提交更改(使用 Tortoise 或命令行)时,提交执行但没有任何工作脚本结果。

我读过,脚本是在保存存储库的 PC 上运行的(如果我错了,请纠正我),所以我进行更改的平台类型不应该是问题。

那么,如果有人可以向我解释为什么这在 Windows 上不起作用,那么我将不胜感激?

最佳答案

预提交 Hook 由托管服务器的计算机运行。如果您使用带有 file:// URL 的存储库或使用 svnlooksvnadmin 命令,那么它始终是本地计算机,因为实际上没有服务器并且可以直接访问存储库。

从你所说的来看,我觉得你将存储库放在网络卷(SMB、NFS 等)上,然后使用 file:// URL 来访问它。如果您使用其他访问方法之一,则不会出现此问题。

您有 3 个选择。

svnserve

svnserve 是一个简单的守护进程,提供svn:// 访问方法。它监听自己的网络端口并使用特定于 Subversion 的协议(protocol)。

通过 ssh 进行 svnserve

svnserve 协议(protocol)通过 ssh 建立隧道,并根据需要启动 svnserve 进程。

Apache HTTP

mod_dav_svn 和 mod_authz_svn 模块通过 Apache httpd 服务器提供对 Subversion 的访问。这使用基于 HTTP 的 DAV 和 DeltaV 协议(protocol)(可选地支持 SSL/TLS)。

SVN 书籍有 whole section on server setup其中包括选择服务器以及如何配置它。您可能需要在做出选择之前阅读本文,然后阅读所选服务器的配置步骤。

关于linux - 从 Windows 到 Linux 的 SVN 预提交 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21927627/

相关文章:

Linux - 只保存最近的 10 个文件夹并删除其余的

运行多个 shell 命令并等待结果的 Python 脚本

python - Tkinter 窗口在嵌入式 python 中无响应

windows - Copy-Item 命令在 Powershell 命令行中有效,但在 bat 文件中无效

linux - SVN 导出命令成功运行但文件未出现在目标路径中

git-svn 克隆失败,perl.exe 断言失败

linux - 获取零后的数字

linux - 在 Arch Linux 上安装 sphinx + re2

Windows 窗体应用程序部署/安装

git - 保管箱风格的 svn/git/mercurial? : auto-commit upon change and auto-checkout