我的网络中有两台电脑: 1) CentOs 2) Windows 7
我在 Linux 机器上创建了存储库并添加了一些预提交 Hook 脚本。然后,我将文件 check out 到两台计算机上的工作副本目录中。现在,当我进行一些更改并从 Linux 工作副本提交它们时,预提交 Hook 将按其应有的方式工作。但是,当我从 Windows 提交更改(使用 Tortoise 或命令行)时,提交执行但没有任何工作脚本结果。
我读过,脚本是在保存存储库的 PC 上运行的(如果我错了,请纠正我),所以我进行更改的平台类型不应该是问题。
那么,如果有人可以向我解释为什么这在 Windows 上不起作用,那么我将不胜感激?
最佳答案
预提交 Hook 由托管服务器的计算机运行。如果您使用带有 file://
URL 的存储库或使用 svnlook
或 svnadmin
命令,那么它始终是本地计算机,因为实际上没有服务器并且可以直接访问存储库。
从你所说的来看,我觉得你将存储库放在网络卷(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/